SQLite strftime()
funkcja umożliwia zwrócenie wartości daty i godziny w określonym formacie.
Rzeczywista zwrócona wartość daty/godziny jest oparta na ciągu godziny podanym jako argument podczas wywoływania funkcji, a także na wszystkich dołączonych modyfikatorach (jako argumentach opcjonalnych). Modyfikator umożliwia zmianę daty, na przykład dodanie liczby dni, ustawienie czasu lokalnego itp.
Składnia
Składnia wygląda tak:
strftime(format, timestring, modifier, modifier, ...)
format
argument może być dowolną kombinacją prawidłowych podstawień ciągu formatu dla strftime()
funkcja.
timestring
argument musi być prawidłowym ciągiem czasu.
modifier
argumenty są opcjonalne. Możesz podać jeden lub więcej modyfikatorów. Jeśli podasz modyfikator, musi to być prawidłowy modyfikator.
Przykład
Oto przykład do zademonstrowania.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Wynik:
2020-04-29 01:29:54
now
ciąg czasu jest konwertowany na bieżącą datę i godzinę na podstawie podanego ciągu formatu.
W tym przypadku mój ciąg formatu zwraca dokładnie ten sam wynik, co datetime('now')
by wrócił.
Dodaj modyfikator
Możemy zmodyfikować poprzedni wynik za pomocą modyfikatora. Oto przykład.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Wynik:
2020-04-29 03:31:50
W tym przypadku dodałem dwie godziny do czasu.
Wiele modyfikatorów
Możesz dodać wiele modyfikatorów. Oto przykład dodania kolejnego modyfikatora do poprzedniego przykładu.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Wynik:
2020-04-29 13:33:22
W moim przypadku localtime
modyfikator spowodował przesunięcie czasu do przodu.
Dzieje się tak, ponieważ localtime
modyfikator zakłada, że podany ciąg czasu jest w uniwersalnym czasie koordynowanym (UTC). Następnie dostosowuje ciąg czasu tak, aby wyświetlał czas lokalny.
Możesz uzyskać inny wynik, w zależności od czasu lokalnego.
Tutaj ponownie porównuje oryginalny czas lokalny ze zmodyfikowanym wynikiem:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Wynik:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Czas Uniksa/epoki
Możesz użyć %s
ciąg formatu (małe litery), aby obliczyć czas epoki.
SELECT strftime('%s', 'now');
Wynik:
1588124826
Czas epoki (znany również jako czas epoki, czas POSIX, sekundy od epoki lub czas epoki UNIX) to liczba sekund od 1970-01-01.
Czas uniksowy jest szeroko stosowany w systemach operacyjnych i formatach plików.
Dzień Juliana
Możesz użyć %J
aby zwrócić Dzień Juliański.
Dzień Juliański to liczba dni od południa w Greenwich 24 listopada 4714 r. p.n.e. (przy użyciu proleptycznego kalendarza gregoriańskiego).
Jeśli używasz proleptycznego kalendarza juliańskiego, jest to poniedziałek, 1 stycznia 4713 pne.
Dzień juliański jest zwykle używany przez astronomów, oprogramowanie itp. do obliczania dni, które upłynęły między dwoma wydarzeniami.
Oto jak zwrócić dzień juliański za pomocą strftime()
funkcja.
SELECT strftime('%J', 'now');
Wynik:
2458968.575441667
Innym sposobem na zrobienie tego w SQLite jest użycie julianday()
funkcja.
Zakres dat
Podobnie jak w przypadku wszystkich funkcji daty i czasu SQLite, strftime()
działa tylko dla dat od 0000-01-01 00:00:00 do 9999-12-31 23:59:59 (dni juliańskie od 1721059.5 do 5373484.5).
W przypadku dat spoza tego zakresu wyniki są niezdefiniowane.