2012-11-09 2 views
10

So che per inserire un datetime questo formato deve essere utilizzato yyyy-mm-dd hh:mm:ss.Come inserire datetime con timezone in SQLite?

Tuttavia il mio set di dati ha un campo data/ora che assomiglia a yyyy-mm-dd hh:mm:ss +/-0X:00, dove X può assumere molti valori ed è diverso dal fuso orario locale del mio computer.

Qual è il modo migliore per inserire un campo data/ora con tali informazioni sul fuso orario in SQLite?

+4

Inserisco sempre il tempo convertito in Greenwich (UTS + 0) e i client lo convertono all'ora locale quando recuperano dal database. In questo modo non è necessario memorizzare il fuso orario nel database. Se è davvero necessario memorizzare il fuso orario del client che ha misurato il tempo, inserirlo in un'altra colonna. – farfareast

+0

Il modo semplice sarà quello di memorizzare il tempo come varcahar/stringa e quindi il tempo nascosto su quing –

+2

@EmmanuelN - Questa è una pessima idea - renderà più difficile lavorare con data/ora; memorizzare sempre i valori nel miglior tipo possibile. farfareast ha l'idea migliore; anche se probabilmente direi UTC, che non ha l'ora legale (incerto su Greenwich). –

risposta

8

La funzione di data e ora incorporata di SQLite comprende solo stringhe di timestamp senza informazioni sul fuso orario.

Se si desidera gestire i fusi orari, bisogna o

  • convertire tutti i timestamp a un fuso orario specifico (UTC), in modo da poter utilizzare le funzioni SQLite su di loro e li può usare per l'ordinamento; oppure
  • lasciare le informazioni sul fuso orario in là, ma eseguire tutti i calcoli e l'ordinamento non in SQL ma nella propria applicazione.