SQLite - data i godzina

SQLite obsługuje pięć funkcji daty i czasu w następujący sposób -

Sr.No. Funkcjonować Przykład
1 data (czas, modyfikatory ...) Zwraca datę w następującym formacie: RRRR-MM-DD
2 czas (timestring, modyfikatory ...) Zwraca czas jako HH: MM: SS
3 datetime (timestring, modyfikatory ...) Zwraca RRRR-MM-DD GG: MM: SS
4 julianday (timestring, modyfikatory ...) Zwraca liczbę dni od południa w Greenwich 24 listopada 4714 roku pne
5 strftime (timestring, modyfikatory ...) Zwraca datę sformatowaną zgodnie z ciągiem formatu określonym jako pierwszy argument sformatowany zgodnie z elementami formatującymi opisanymi poniżej.

Wszystkie powyższe pięć funkcji daty i godziny przyjmują jako argument ciąg czasu. Po ciągu czasu następuje zero lub więcej modyfikatorów. Funkcja strftime () również przyjmuje jako pierwszy argument ciąg formatu. Poniższa sekcja zawiera szczegółowe informacje na temat różnych typów ciągów czasowych i modyfikatorów.

Ciągi czasu

Ciąg czasu może mieć dowolny z następujących formatów -

Sr.No. Ciąg czasu Przykład
1 RRRR-MM-DD 2010-12-30
2 RRRR-MM-DD GG: MM 2010-12-30 12:10
3 RRRR-MM-DD GG: MM: SS.SSS 2010-12-30 12: 10: 04.100
4 MM-DD-RRRR GG: MM 30-12-2010 12:10
5 HH: MM 12:10
6 RRRR-MM-DDTHH: MM 2010-12-30 12:10
7 HH: MM: SS 12:10:01
8 RRRRMMDD GGMMSS 20101230 121001
9 teraz 2013-05-07

Możesz użyć litery „T” jako dosłownego znaku oddzielającego datę i godzinę.

Modyfikatory

Po ciągu czasu może następować zero lub więcej modyfikatorów, które zmienią datę i / lub godzinę zwróconą przez dowolną z powyższych pięciu funkcji. Modyfikatory są stosowane od lewej do prawej.

W SQLite dostępne są następujące modyfikatory -

  • Dni NNN
  • 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
  • localtime
  • utc

Formatters

SQLite zapewnia bardzo przydatną funkcję strftime()aby sformatować dowolną datę i godzinę. Możesz użyć następujących podstawień, aby sformatować datę i godzinę.

Podstawienie Opis
%re Dzień miesiąca, 01-31
%fa Ułamki sekund, SS.SSS
% H Godzina, 00-23
%jot Dzień roku, 001-366
%JOT Numer dnia juliańskiego, DDDD.DDDD
% m Miesiąc 00-12
% M Minuta, 00-59
% s Sekundy od 1970-01-01
% S Sekundy, 00-59
% w Dzień tygodnia, 0-6 (0 to niedziela)
% W Tydzień roku, 01-53
% Y Rok RRRR
%% symbol%

Przykłady

Wypróbujmy teraz różne przykłady przy użyciu zachęty SQLite. Następujące polecenie oblicza aktualną datę.

sqlite> SELECT date('now');
2013-05-07

Następujące polecenie oblicza ostatni dzień bieżącego miesiąca.

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

Następujące polecenie oblicza datę i godzinę dla danego znacznika czasu UNIX 1092941466.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Następujące polecenie oblicza datę i godzinę dla danego znacznika czasu UNIX 1092941466 i kompensuje lokalną strefę czasową.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

Następujące polecenie oblicza bieżący znacznik czasu UNIX.

sqlite> SELECT strftime('%s','now');
1393348134

Następujące polecenie oblicza liczbę dni od podpisania Deklaracji Niepodległości Stanów Zjednoczonych.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

Następujące polecenie oblicza liczbę sekund od określonego momentu w 2004 roku.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Następujące polecenie oblicza datę pierwszego wtorku października dla bieżącego roku.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

Następujące polecenie oblicza czas od epoki UNIX w sekundach (np. Strftime ('% s', 'now') z wyjątkiem części ułamkowej).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Aby przekonwertować między wartościami czasu UTC i czasu lokalnego podczas formatowania daty, użyj modyfikatorów utc lub czasu lokalnego w następujący sposób -

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00