Как преобразовать данные из numeric в дату в MS SQL

В MS SQL 2016 создано представление, из которого надо забирать данные. Одно из полей [AuditRecordCreationDate] должно содержать дату, но SSMS говорит, что его формат: AuditRecordCreationDate (numeric(19,0) Не Null) и данные в нем выглядят как 1526628000258

Как правильно преобразовать его в формат даты, чтобы забирать запросом и передавать в другую систему?

P.S. Пробовал разные варианты - разные ошибки:

cast(AuditRecordCreationDate as datetime) as NEWDATE,

Arithmetic overflow error converting expression to data type datetime.

cast(cast(AuditRecordCreationDate as nvarchar(40)) as datetime) as NEWDATE,

Conversion failed when converting date and/or time from character string.


Ответы (1 шт):

Автор решения: Akina
SELECT DATEADD(second, 1526628000258 / 1000, '1970-01-01 01:00:00.000');
-- или даже
SELECT DATEADD(millisecond, 1526628000258 % 1000,DATEADD(second, 1526628000258 / 1000, '1970-01-01 01:00:00.000'));
-- или уж совсем
SELECT DATEADD(millisecond, 1526628000258 % 1000, CAST(DATEADD(second, 1526628000258 / 1000, '1970-01-01 01:00:00.000') AS DATETIME2));

Во втором запросе получается 257 миллисекунд, а не 258 - но это не ко мне претензии...

Напрямую миллисекунды прибавить низзя - второй параметр должен помещаться в INT.

fiddle

→ Ссылка