SQLite obsługuje pięć funkcji do pracy z datami i godzinami. Są to:
date()time()datetime()julianday()strftime()
Wszystkie te funkcje przyjmują jako argument ciąg czasu. Akceptują również inne argumenty za modyfikacją/formatowaniem danych wyjściowych.
strftime() funkcja jest najbardziej wszechstronną funkcją z pięciu. W rzeczywistości ta funkcja może zrobić wszystko, co inne cztery.
Innymi słowy, możesz użyć strftime() dla wszystkich wymagań dotyczących formatowania daty i godziny. Pozostałe cztery funkcje są dostępne wyłącznie dla wygody.
Składnia
Składnia każdej funkcji jest następująca:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...) W pierwszych czterech funkcjach pierwszy argument jest ciągiem czasu, a wszystkie kolejne argumenty są modyfikatorami.
W strftime() function pierwszym argumentem jest ciąg formatu, po którym następuje ciąg czasu i wszelkie modyfikatory.
Wszystkie prawidłowe ciągi czasu i modyfikatory są wymienione u dołu tego artykułu.
Ale najpierw przejrzyjmy kilka krótkich przykładów każdej z tych funkcji.
Funkcja date()
Możesz użyć date() funkcja z jednym argumentem lub wieloma argumentami.
Oto przykład z tylko jednym argumentem:
SELECT date('now'); Wynik:
2020-04-23
Oto przykład, w którym zastosowano modyfikator:
SELECT date('now', 'localtime'); Wynik:
2020-04-24
W tym przypadku użyłem localtime modyfikator. Ten modyfikator zakłada, że ciąg czasu jest w uniwersalnym czasie koordynowanym (UTC) i dostosowuje ciąg czasu tak, aby wyświetlał czas lokalny.
Funkcja time()
time() funkcja jest podobna do date() funkcji, z wyjątkiem tego, że wyświetla czas zamiast daty.
Oto przykład:
SELECT time('now'); Wynik:
00:02:05
I oto jest z localtime modyfikator:
SELECT time('now', 'localtime'); Wynik:
10:02:09
Funkcja datetime()
SQLite datetime() funkcja łączy dwie poprzednie funkcje, w tym sensie, że wyświetla zarówno datę, jak i godzinę.
Oto przykład:
SELECT datetime('now'); Wynik:
"2020-04-24 00:04:13"
I oto jest z localtime modyfikator:
SELECT datetime('now', 'localtime'); Wynik:
"2020-04-24 10:04:46"
Funkcja julianday()
julianday() funkcja zwraca ciągłą liczbę dni od początku okresu juliańskiego, czyli poniedziałek, 1 stycznia 4713 pne, w proleptycznym kalendarzu juliańskim (24 listopada 4714 pne, w proleptycznym kalendarzu gregoriańskim).
Oto, jak to wygląda przy użyciu now jako ciąg czasowy:
SELECT julianday('now'); Wynik:
2458963.50964815
A tutaj używa localtime modyfikator:
SELECT julianday('now', 'localtime'); Wynik:
2458963.92637685
Funkcja strftime()
Jak wspomniano, strftime() Funkcja może służyć do wyprowadzania wartości daty i czasu w dowolnym formacie dostępnym w poprzednich funkcjach.
Ta funkcja umożliwia bardzo dokładne określenie sposobu formatowania wartości daty/godziny. Umożliwia podanie dokładnego formatu, w jakim chcesz go zaprezentować.
Składnia tej funkcji wygląda następująco:
strftime(format, timestring, modifier, modifier, ...)
Zauważ, że pierwszym argumentem jest format . W tym miejscu podajesz format, w którym chcesz, aby ciąg czasu był wyprowadzany.
Ciąg formatu dla strftime() może składać się z dowolnej z następujących podstawień:
| %d | Dzień miesiąca:00 |
| %f | Ułamkowe sekundy:SS.SSS |
| %H | Godzina:00-24 |
| %j | Dzień roku:001-366 |
| %J | Numer dnia julijskiego |
| %m | Miesiąc:01-12 |
| %M | Minuta:00-59 |
| %s | Sekundy od 1970-01-01 |
| %S | Sekundy:00-59 |
| %w | Dzień tygodnia 0-6 z niedzielą==0 |
| %W | Tydzień w roku:00-53 |
| %Y | Rok:0000-9999 |
| %% | % |
Oto przykład:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now'); Wynik:
"2020-04-24 00:43:51"
W tym przypadku otrzymujemy taki sam wynik, jak przy użyciu datetime() funkcja.
Tutaj jest z localtime modyfikator:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime'); Wynik:
"2020-04-24 10:45:27"
Ponownie, ten sam wynik, co w przypadku datetime() . Różnica polega na tym, że strftime() umożliwia nam wyraźne określenie formatu wyjścia.
Na przykład:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime'); Wynik:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
Właściwe formaty ciągu czasu
Argument łańcuchowy czasu we wszystkich funkcjach daty/czasu może być dostarczony w dowolnym z następujących formatów:
- RRRR-MM-DD
- RRRR-MM-DD GG:MM
- RRRR-MM-DD GG:MM:SS
- RRRR-MM-DD GG:MM:SS.SSS
- RRRR-MM-DDTHH:MM
- RRRR-MM-DDTHH:MM:SS
- RRRR-MM-DDTHH:MM:SS.SSS
- GG:MM
- GG:MM:SS
- GG:MM:SS.SSS
- teraz
- DDDDDDDDDD
Prawidłowe modyfikatory
Możesz użyć dowolnego z następujących modyfikatorów z funkcjami daty/czasu:
- NNN dni
- NNN godzin
- NNN minut
- NNN.NNNN sekund
- NNN miesięcy
- NNN lat
- początek miesiąca
- początek roku
- początek dnia
- dzień tygodnia N
- unixepoch
- czas lokalny
- UTC
N odnosi się do liczby, która jest dodawana do daty, na podstawie określonej jednostki.
Na przykład:
SELECT
date('now'),
date('now', '3 days'); Wynik:
date('now') date('now', '3 days')
----------- ---------------------
2020-04-24 2020-04-27
Oto taki, który używa start of month jako modyfikator:
SELECT
date('now'),
date('now', 'start of month'); Wynik:
date('now') date('now', 'start of month')
----------- -----------------------------
2020-04-24 2020-04-01