2012-05-22 193 views
5

我有1323648000这是int(10)。我需要能够将其转换为某种日期格式。像dd/hh/yy hh:mm:ss。我已经试过在这里给我们几个例子,但我似乎无法得到它的工作。我试图把它作为一个varchar(10)并转换,但没有。 Excel也输出########。那么数字不正确?SQL将INT转换为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

什么RDBMS?看起来像MS SQL服务器... –

+0

是的,它是一个MS SQL Server的 – tiggles

回答

5

这看上去就像一个Unix风格基于划时代时间戳,自1970年以来

转换的秒即数是RDBMS特定的。用SQLITE,你会做

select datetime(1323648000, 'unixepoch'); 

并且产量2011-12-12 00:00:00(GMT)。

检查您的RDBMS文档的日期时间转换函数。

+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为varchar(10),3),“DD/MM/YYYY HH:MM:SS'), engine4_openid_services.openidservice_id, engine4_openid_services.openidservice_name FROM engine4_openid_statusstats, engine4_openid_services – tiggles

2

如果确实存储为Epoch Time(它看上去就是这样),那些是自1970年1月1日以来的秒数。您可以通过将日期加上秒数将其转换为日期时间。

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