2013-06-07 7 views

Odpowiedz

38

Jednym SQLite's supported date/time formats jest sygnatury czasowe Unix, tj sekund od 1970. do konwertowania milisekund, że po prostu podzielić przez 1000.

Następnie użyj numeru date/time function, aby uzyskać rok i miesiąc:

SELECT strftime('%Y-%m', MillisField/1000, 'unixepoch') FROM MyTable 
+0

Proszę zobaczyć poniższą odpowiedź @bsvtag. Ten zawiera "czas lokalny". – Mikitz06

+0

@ Mikitz06 Te milisekundowe znaczniki czasu są zdefiniowane jako będące w UTC. To, czy wynik ma być UTC, czy w jakiejś lokalnej strefie czasowej, zależy od aplikacji. –

+0

To prawda, sir! :) – Mikitz06

17

Datetime oczekuje epochtime, który jest liczbą sekund w milisekundach. Konwertuj na sekundy obowiązują &.

SELECT datetime(1346142933585/1000, 'unixepoch'); 

można zweryfikować to z tego skrzypcach

http://sqlfiddle.com/#!5/d41d8/223

15

Czy chcesz uniknąć milisekund do konwersji na datę lub funkcji do konwersji milisekund na bieżąco? Ponieważ SQLite Funkcje data pracować sekund, a następnie można spróbować

  • nawróconych milisekund w zapytaniu, jak to
    select date(milliscolumn/1000,'unixepoch','localtime') from table1
  • konwertować millis na sekundy przed zapisaniem go do db, a następnie użyj funkcji daty w Zapytanie sql:
+0

To powinna być poprawna odpowiedź, ponieważ bez parametru czasu lokalnego czas jest nieprawidłowy (GMT jest pod opieką). – Leeeeeeelo