Преобразование времени Unix в DateTime 103 - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть хранимая процедура, объединяющая две таблицы данных бронирования отелей, однако API, из которого я извлекаю свои данные, использует время Unix.Мне нужно преобразовать это в DateTime, чтобы соответствовать полям моей компании.

В настоящее время мое преобразование выглядит следующим образом.

IIF([start] IS NOT NULL, 
    CONVERT(varchar(10), [start], 103),'')  as 'ArrivalDate'

Это просто возвращает значение 1547310796, поэтому преобразование не было выполнено.

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

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

работает на Oracle / Sql

select TO_date ('19700101000000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL(<YOUR_COLUMN>+ decode (sessiontimezone, '+01:00', 3600, '+02:00', 7200, 0) , 'SECOND') as ArrivalDate
0 голосов
/ 20 февраля 2019

Я просто хотел вернуться к этому и добавить еще один ответ, который работает, если вы просто хотите дату, а не время.

    SELECT cast(DATEADD(S,[start], '1970-01-01') as date) as 'ArrivalDate'
0 голосов
/ 13 февраля 2019

Это должно сделать это:

SELECT DATEADD(second, 1547310796 - DATEDIFF(second, GETDATE(), GETUTCDATE()), '1970-01-01')

Часть DATEDIFF(second, GETDATE(), GETUTCDATE()) покажет вам, насколько позади вы от времени UTC.Вам нужно вычесть это количество секунд из метки времени UTC, чтобы получить местное время.

...