Función de conversión de marca de tiempo de SQLite

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.

preguntado el 03 de diciembre de 13 a las 13:12

1 Respuestas

> 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

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

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.