2012-05-22 30 views
5

Tengo 1323648000 que es int (10). Necesito poder convertirlo a un formato de fecha de algún tipo. Algo como dd/hh/aa hh: mm: ss. He intentado con nosotros algunos ejemplos aquí, pero parece que no puedo hacer que funcione. Intenté convertirlo en varchar (10) y convertirlo, pero nada. Excel también genera ########. ¿El número es incorrecto entonces?SQL convertir INT a 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

¿Qué RDBMS? Parece que MS SQL Server ... –

+0

Sí, es un servidor de MS SQL trabajo aún no ha – tiggles

Respuesta

5

Ese es el aspecto de una marca de tiempo basada en la época al estilo Unix, es decir, el número de segundos desde 1970.

La conversión es RDBMS específica. Con SQLITE usted haría

select datetime(1323648000, 'unixepoch'); 

y que rinde 2011-12-12 00:00:00 (GMT).

Revise su documentación de RDBMS para las funciones de conversión de fecha y hora.

+0

Tenías razón era una marca de tiempo Unix que he usado.. 'DE unixtime (engine4_openid_statusstats.openidstat_time)' y funcionó. ¡Gracias! – tiggles

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

:(SELECCIONAR engine4_openid_statusstats.openidstat_id, TO_CHAR (CAST (engine4_openid_statusstats.openidstat_time como VARCHAR (10), 3), 'DD/MM/AAAA hh: mm: ss'), engine4_openid_services.openidservice_id, engine4_openid_services.openidservice_name DE engine4_openid_statusstats, engine4_openid_services – tiggles

2

Si de hecho se está almacenando como Epoch Time (que parece que es), ese es el número de segundos desde 01 de enero de 1970. Puede convertirlo a una fecha agregando los segundos a esta fecha.

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