2012-05-22 8 views
5

У меня есть 1323648000, который является int (10). Мне нужно преобразовать его в формат даты. Что-то вроде dd/hh/yy hh: mm: ss. Я попробовал здесь несколько примеров, но я не могу заставить его работать. Я пытался использовать его как varchar (10) и конвертировать, но ничего. Excel также выводит ########. Правильно ли это число?SQL convert INT to datetime

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 
+0

Что такое РСУБД? Похоже, MS SQL Server ... –

+0

Да, это MS SQL Server – tiggles

ответ

5

Это выглядит как Unix-стиле эпохи на основе временной метки, т.е. число секунд с 1970 года

Конверсия является СУБД конкретного. С SQLITE вы бы сделали

select datetime(1323648000, 'unixepoch'); 

и который дает 2011-12-12 00:00:00 (GMT).

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

+0

Вы были правы это была временная метка Unix я.. 'FROM UnixTime (engine4_openid_statusstats.openidstat_time)', и она работала. Благодаря! – tiggles

1
TO_CHAR(column_name, 'DD/MM/YYYY hh:mm:ss') 
+0

не работал :(ВЫБРАТЬ engine4_openid_statusstats.openidstat_id, TO_CHAR (CAST (engine4_openid_statusstats.openidstat_time AS VARCHAR (10), 3), «DD/MM/YYYY чч: мм: сс), engine4_openid_services.openidservice_id, engine4_openid_services.openidservice_name ИЗ engine4_openid_statusstats, engine4_openid_services – tiggles

2

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

SELECT DATEADD(SS, 1323648000, '01/01/1970')