Función de conversión de marca de tiempo de SQLite
Frecuentes
Visto 2,953 veces
1
He heredado una base de datos SQLite, en ella tengo un campo TIMESTAMP llamado ZDATE.
Un valor es 401,580,000 y sé que corresponde al 23 de septiembre de 2013.
He calculado que el 0 de este campo es la medianoche del 1 de enero de 2001 (?).
Sin embargo, no encontré ninguna función de conversión para obtener una fecha formateada, de hecho, si uso fecha() Yo obtengo:
ZDATE date(zdate)
401580000 1094776-12632211-20
Cualquier ayuda será apreciada.
1 Respuestas
1
> select 401580000 / (julianday('2013-09-23') - julianday('2001-01-01'));
86398.4509466437
> select 60*60*24;
86400
Entonces, esta marca de tiempo parece usar segundos.
Para convertirlo en una marca de tiempo que SQLite puede usar directamente, es decir, una marca de tiempo de época de Unix, solo agregue el desplazamiento apropiado:
> select datetime(401580000 + strftime('%s', '2001-01-01 02:00:00'), 'unixepoch');
2013-09-23 00:00:00
Respondido el 03 de diciembre de 13 a las 13:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sqlite date timestamp or haz tu propia pregunta.
Gracias, también agregué 7200 para que devuelva correctamente la medianoche del 2013-09-23 - Teejay
¿Alguna idea de por qué empezarlo el 1 de enero de 2001? Es una base de datos utilizada por una aplicación de iOS: Teejay
2001 es el año del lanzamiento de Mac OS X 10.0. en.wikipedia.org/wiki/Epoch_(fecha_de_referencia) - Más lejos