Przechowuję datę z Calendar.getTimeInMilliseconds() w SQLite DB. Muszę zaznaczyć pierwsze wiersze każdego miesiąca w instrukcji SELECT, więc potrzebuję konwersji czasu w milisekundach na dowolny format daty tylko przy użyciu funkcji SQLite. Jak mogę tego uniknąć?Jak przekonwertować milisekundy do tej pory w SQLite
Odpowiedz
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
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
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:
To powinna być poprawna odpowiedź, ponieważ bez parametru czasu lokalnego czas jest nieprawidłowy (GMT jest pod opieką). – Leeeeeeelo
Proszę zobaczyć poniższą odpowiedź @bsvtag. Ten zawiera "czas lokalny". – Mikitz06
@ 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. –
To prawda, sir! :) – Mikitz06