Voy a almacenar valores de fecha y hora en una base de datos SQLite (usando Delphi y la biblioteca DISqlite). La naturaleza de la base de datos es tal que nunca será necesario transferirla entre computadoras o sistemas, por lo que la interoperabilidad no es una restricción. Mi enfoque en cambio está en la velocidad de lectura. El campo de fecha y hora será indexado y lo buscaré mucho, además de leer en miles de valores de fecha y hora en secuencia.Forma óptima de almacenar valores de fecha y hora en la base de datos SQLite (Delphi)
Desde SQLite no tiene un tipo de datos explícita para los valores de fecha y hora, hay varias opciones:
utilización tipo de datos REAL y los valores tDateTime tienda de Delphi directamente: más rápido, sin conversión de cadena en la carga; imposible depurar fechas usando un administrador de db como SQLiteSpy, ya que las fechas no serán legibles por humanos. No se pueden usar las funciones de fecha de SQLite (?)
use un formato de cadena simple, p. YYYYMMDDHHNNSS: se requiere conversión, pero es relativamente fácil para la CPU (no es necesario buscar separadores), los datos son legibles por el ser humano. Aún no puede usar las funciones de fecha de SQLite.
hacer otra cosa. ¿Qué es lo que se recomienda hacer?
He leído http://www.sqlite.org/lang_datefunc.html pero no hay ninguna mención de qué tipo de datos a utilizar, y, al no ser educados formalmente en la programación, no lo bastante asimilo el foco en fechas julianas. ¿Por qué la conversión adicional? Leeré mucho estos valores, por lo que cualquier conversión adicional entre cadenas y TDateTime agrega un costo significativo.
También he visto http://stackoverflow.com/questions/1933720/how-do-i-insert-datetime-value-into-a-sqlite-database pero no responde mi pregunta sobre qué La forma óptima es, o hay una razón realmente convincente para preferir el formato de cadena ISO (y las conversiones asociadas) sobre la inserción directa de los valores TDateTime de Delphi. –