Я много видел, чтобы конвертировать Unix-время из других форматов в datetime, но ничего не было с микросекунд. Как вы можете выбрать поле с отметкой времени 1470562081943371, не получая переполнения с выходом ГГГГ-ММ-ДД ЧЧ: ММ: СС: ММ?Как преобразовать время Unix в микросекундах с SQL Server?
ответ
Не уверен, если это устройство правильно, но ...
Declare @UnixTime bigint = 1470562081943371
Select DateAdd(MS,round(((@UnixTime/1000000.)-(@UnixTime/1000000))*1000,0),DateAdd(SECOND,(@UnixTime/1000000),'1970-01-01 00:00:00'))
Возвращает
2016-08-07 09:28:01.943
Подтвержденные результаты с http://www.epochconverter.com/
Выглядит правильно. Я знаю, что это 8/7/2016 – Fastidious
@Fastidious Well, что обнадеживает. Надеюсь, вы сможете подтвердить временную часть. Если вам не нужны миллисекунды, просто отключите первый DateAdd (MS ... –
@Fastidious Confirmed !! http://www.epochconverter.com/ –
вы можете использовать BIGINT? – Jeremy
Да, это то, что он будет хранить. – Fastidious
так что ... выберите его? я просто создал переменную типа bigint, сохранил номер и выбрал его без проблем. Не знаете, какова ваша настоящая проблема ... – Jeremy