2012-11-09 8 views
10

Wiem, że do wstawienia datetime należy użyć tego formatu: yyyy-mm-dd hh:mm:ss.Jak wstawić datetime z timezone do SQLite?

Jednak mój zestaw danych ma pola datownika, który wygląda jak yyyy-mm-dd hh:mm:ss +/-0X:00, gdzie X może przybierać różne wartości i różni się od lokalnej strefy czasowej mojego komputera.

Jaki jest najlepszy sposób na wstawienie pola datetime z takimi informacjami o strefie czasowej do SQLite?

+4

Zawsze wstawiałam czas konwertowany na Greenwich (UTS + 0), a klienci przekształcali go w czas lokalny po pobraniu z bazy danych. W ten sposób nie trzeba przechowywać strefy czasowej w bazie danych. Jeśli naprawdę potrzebujesz przechowywać strefę czasową klienta, który mierzył czas, umieść go w innej kolumnie. – farfareast

+0

Łatwym sposobem będzie przechowywanie czasu jako varcahar/string, a następnie ukrywanie czasu na poszukiwanie –

+2

@EmmanuelN - To okropny pomysł - sprawi to, że praca z datą/czasem będzie trudniejsza; zawsze przechowuj wartości w najlepszym możliwym typie. farfareast ma lepszy pomysł; chociaż prawdopodobnie powiedziałbym UTC, który nie ma oszczędności w świetle dziennym (niepewny co do Greenwich). –

Odpowiedz

8

Wbudowana funkcja daty i czasu SQLite rozumie tylko ciągi sygnatur czasowych bez informacji o strefie czasowej.

Jeśli chcesz obsługiwać stref czasowych, trzeba albo

  • przeliczyć wszystkie znaczniki czasu do jednej konkretnej strefy czasowej (UTC), tak aby można było korzystać z funkcji SQLite na nich i można ich używać do sortowania; lub
  • zostaw tam informacje o strefie czasowej, ale wykonaj wszystkie obliczenia i sortowanie nie w SQL, ale w aplikacji.
Powiązane problemy