Memorizzo i valori datetime in un database SQLite (utilizzando Delphi e la libreria DISqlite). La natura del db è tale che non avrà mai bisogno di essere trasferita tra computer o sistemi, quindi l'interoperabilità non è un vincolo. La mia attenzione è invece sulla velocità di lettura. Il campo datetime verrà indicizzato e cercherò molto su di esso, oltre a leggere in migliaia di valori datetime in sequenza.Modo ottimale per archiviare valori datetime nel database SQLite (Delphi)
Dato che SQLite non ha un tipo di dati esplicito per i valori datetime, ci sono diverse opzioni:
uso tipo di dati REAL e valori TDateTime negozio di Delphi direttamente: più veloce, nessuna conversione da stringa su carico; impossibile eseguire il debug delle date utilizzando un gestore db come SQLiteSpy, poiché le date non saranno leggibili. Impossibile utilizzare le funzioni di data SQLite (?)
utilizzare un formato stringa semplice, ad es. YYYYMMDDHHNNSS: la conversione è richiesta ma relativamente facile sulla CPU (non è necessario cercare i separatori), i dati sono leggibili. Non è ancora possibile utilizzare le funzioni di data SQLite.
fare qualcos'altro. Qual è la cosa consigliata da fare?
Ho letto http://www.sqlite.org/lang_datefunc.html ma non c'è menzione di quale tipo di dati da utilizzare, e, non essendo formalmente istruito nella programmazione, non abbastanza Grok l'attenzione sulla data di Julian. Perché la conversione aggiuntiva? Leggerò molto in questi valori, quindi eventuali conversioni aggiuntive tra stringhe e TDateTime aggiungono un costo significativo.
Ho anche visto http://stackoverflow.com/questions/1933720/how-do-i-insert-datetime-value-into-a-sqlite-database ma non risponde alla mia domanda su cosa il modo ottimale è, o c'è un motivo davvero convincente per preferire il formato di stringa ISO (e le conversioni associate) oltre l'inserimento diretto dei valori di TDateTime di Delphi. –