Как преобразовать время эпохи в дату?

Привет, у меня есть столбец с числовым типом данных, например, 1310112000, это дата, но я не знаю, как сделать это в понятном формате: пример: 10 марта 2013 г. 12:00: 00 вечера

Кто-нибудь может мне помочь, пожалуйста.


person pradeep kumar    schedule 25.04.2014    source источник
comment
Можете ли вы принять ответ? Это помогает другому с той же проблемой.   -  person MinhD    schedule 25.04.2014
comment
возможный дубликат Преобразование эпохи в дату в sqlplus/Oracle   -  person Alex Poole    schedule 28.04.2014
comment
Да, работает нормально.   -  person pradeep kumar    schedule 28.04.2014


Ответы (3)


Это время EPOCH: количество секунд, прошедших с Epoch (1970-01-01). Использовать это:

SELECT CAST(DATE '1970-01-01' + ( 1 / 24 / 60 / 60 ) * '1310112003' AS TIMESTAMP) FROM DUAL;

Результат:

08-JUL-11 08.00.03.000000000 AM
person MinhD    schedule 25.04.2014

Пожалуйста, попробуй

select from_unixtime(floor(EPOCH_TIMESTAMP/1000)) from table;

Это даст результат, например: 2018-03-22 07:10:45 ссылка PFB из MYSQL

person rahulnikhare    schedule 29.03.2018
comment
Просто удалите / 1000, если у вас нет миллисекунд, у меня отлично работает - person Rapwnzel; 17.11.2019

В Microsoft SQL Server предыдущие ответы у меня не сработали. Но работает следующее.

SELECT created_time AS created_time_raw, 
dateadd( second, created_time, CAST( '1970-01-01' as datetime ) ) AS created_time_dt 
FROM person

person — это таблица базы данных, а created_time — целочисленное поле, значение которого представляет собой количество секунд с начала эпохи.

Могут быть и другие способы выполнения datetime арифметики. Но это первое, что сработало. Я не знаю, специфично ли это для MSSQL.

person Mike Finch    schedule 06.02.2019