SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Funkcje daty i czasu SQLite

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                   

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować istniejące dane za pomocą SQLite

  2. Rozszerzona składnia zapytań SQLite w systemie Android

  3. PRAGMA table_list w SQLite

  4. Czy powinienem utworzyć klasę, która dziedziczy SQLiteOpenHelper dla każdej tabeli w mojej bazie danych?

  5. java.lang.IllegalStateException:Nie można odczytać wiersza 0, col -1 z CursorWindow — problem z sqlite dla Androida