SQL преобразовать INT в дату и время

У меня 1323648000, который является INT (10). Мне нужно иметь возможность преобразовать его в какой-либо формат даты. Что-то вроде дд / чч / гг чч: мм: сс. Я попробовал нам несколько примеров здесь, но я не могу заставить его работать. Я пытался разыграть его как varchar(10) и конвертировать, но ничего. Excel также выводит ########. Номер неверный тогда?

SELECT
engine4_openid_statusstats.openidstat_id,
CONVERT(datetime,CAST(engine4_openid_statusstats.openidstat_time AS varchar(10),3),
engine4_openid_services.openidservice_id,
engine4_openid_services.openidservice_name
FROM
engine4_openid_statusstats ,
engine4_openid_services

3 ответа

Решение

Это похоже на временную метку, основанную на эпохе Unix, то есть количество секунд с 1970 года.

Преобразование зависит от СУБД. С SQLITE вы бы сделали

select datetime( 1323648000, 'unixepoch' );

и это дает 2011-12-12 00:00:00 (GMT).

Проверьте вашу документацию РСУБД для функций преобразования даты и времени.

Если оно действительно хранится как время эпохи (как оно выглядит), это число секунд с 01 января 1970 года. Вы можете преобразовать его в дату и время, добавив секунды к этой дате.

SELECT DATEADD(SS, 1323648000, '01/01/1970')
TO_CHAR(column_name, 'DD/MM/YYYY hh:mm:ss')
Другие вопросы по тегам