Преобразование времени Unix в DateTime 103

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

В настоящее время моя конверсия выглядит так.

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

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

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

. . . Это связано с тем, что ваше базовое значение не соответствует желаемому формату (например, date).

Yogesh Sharma 13.02.2019 13:55

Какой продукт СУБД вы используете? «SQL» — это просто язык запросов, а не название конкретного продукта базы данных (и в стандарте SQL нет IIF). Добавьте тег для продукта базы данных, который вы используете.

a_horse_with_no_name 13.02.2019 14:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
170
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

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

select TO_date ('19700101000000','YYYYMMDDHH24MISS') + NUMTODSINTERVAL(<YOUR_COLUMN>+ decode (sessiontimezone, '+01:00', 3600, '+02:00', 7200, 0) , 'SECOND') as ArrivalDate

Это Оракул(?). Вопрос помечен как "sql-сервер"

Hans Kesting 13.02.2019 14:17

@HansKefing нет, не оракул.

Barbaros Özhan 13.02.2019 14:20

""to_date" не является распознаваемым именем встроенной функции."

Hans Kesting 13.02.2019 14:27

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

    SELECT cast(DATEADD(S,[start], '1970-01-01') as date) as 'ArrivalDate'

Другие вопросы по теме