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