22 Votos

SQLite: CURRENT_TIMESTAMP devuelve una hora incorrecta

Pregunta de SmartUser | 21/11/2023 a las 16:10

Me gustaría almacenar la hora actual en una base de datos SQLite. Para esto, descubrí la constante CURRENT_TIMESTAMP que debería proporcionarme justo la marca de tiempo que necesito.

Sin embargo, la hora siempre se retrasa de una hora. No importa si trabajo con un valor de columna predeterminado...

CREATE TABLE d (dat DATETIME DEFAULT CURRENT_TIMESTAMP, ...);

...o si configurdo el valor "a mano":

UPDATE d SET dat = CURRENT_TIMESTAMP WHERE ...;

Ambas formas conducen a este cambio de tiempo y siempre obtengo el tiempo equivocado con esa diferencia horaria cuando intento leer los valores. Lo extraño de esto es que los minutos siempre son correctos, la hora siempre es incorrecta. ¿Qué puedo hacer?

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

SQLite almacena la hora CURRENT_TIMESTAMP en el formato UTC/GMT (Coordinated Universal Time / Greenwich Mean Time - Hora Universal Coordinada / Hora Media de Greenwich). Esto significa que la hora se almacena independientemente de la zona horaria correspondiente en el que utiliza su ordenador.

Por lo tanto, debe convertir la hora a su hora local actual al leerla, de modo que se tengan en cuenta la zona horaria y el horario de verano.

Puede hacerlo de la siguiente manera:

SELECT DATETIME(dat, 'localtime') FROM tab;

En este ejemplo, leemos la columna "dat" de la tabla "tab".

Una ventaja de este tipo de almacenamiento es que el almacenamiento es siempre el mismo y no depende de la ubicación o zona horaria.
22/11/2023 a las 10:26

ResponderPositivo Negativo
Responder

Temas Relacionados

SQLite: Examinar si existe una Tabla

Información | 0 Comentarios

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.