poniedziałek, 24 września 2018

SQLite - Data i godzina


SQLite - Data i godzina

SQLite obsługuje pięć funkcji daty i czasu w następujący sposób:
L.p.
Funkcja
Przykład
1
date (termin, modyfikatory ...)
Zwraca datę w tym formacie: RRRR-MM-DD
2
time (czas, modyfikatory ...)
To zwraca czas jako GG: MM: SS
3
datetime (termin, modyfikatory ...)
To zwraca YYYY-MM-DD HH: MM: SS
4
julianday (termin, modyfikatory ...)
Zwraca liczbę dni od południa w Greenwich 24 listopada 4714 pne
5
strftime (timestring, modyfikatory ...)
Zwraca datę sformatowaną zgodnie z łańcuchem formatu określonym jako pierwszy argument sformatowany zgodnie z formaterami wyjaśnionymi poniżej.
Wszystkie powyższe pięć funkcji daty i czasu przyjmuje jako argument czasowy ciąg znaków. Po łańcuchu czasu następuje zero lub więcej modyfikatorów. Funkcja strftime() przyjmuje także ciąg formatu jako swój pierwszy argument. Poniższa sekcja zawiera szczegółowe informacje na temat różnych typów ciągów czasu i modyfikatorów.

Łańcuchy czasu

Ciąg czasu może mieć dowolny z poniższych formatów -
L.p.
Łańcuch czasu
Przykład
1
RRRR-MM-DD
2017-12-30
2
RRRR-MM-DD HH: MM
2017-12-30 12:10
3
RRRR-MM-DD HH: MM: SS.SSS
2017-12-30 12: 10: 04.100
4
MM-DD-RRRR GG: MM
30-12-2017 12:10
5
HH: MM
12:10
6
RRRR-MM-DD T HH: MM
2017-12-30 12:10
7
HH: MM: SS
12:10:01
8
YYYYMMDD HHMMSS
20171230 121001
9
teraz
2017-05-07
Możesz użyć litery "T" jako literalnej postaci oddzielającej datę od czasu.

Modyfikatory

Po ciągu czasu może następować zero lub więcej modyfikatorów, które zmienią datę i / lub czas zwracany przez którąkolwiek z powyższych pięciu funkcji. Modyfikatory są stosowane od lewej do prawej.
Następujące modyfikatory są dostępne w SQLite -
  • 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ń powszedni N
  • unixepoch
  • czas lokalny
  • utc

Formatowanie

SQLite zapewnia bardzo przydatną funkcję strftime() do formatowania dowolnej daty i czasu. Możesz użyć następujących podstawień, aby sformatować swoją datę i godzinę.
Podstawienie
Opis
%d
Dzień miesiąca, 01-31
%f
Ułamkowe sekundy, SS.SSS
% H
Godzina, 00-23
%j
Dzień roku, 001-366
%J
Numer juliański, 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
Spróbujmy teraz różnych przykładów, używając zachęty SQLite. Następujące polecenie oblicza bieżącą datę.
sqlite> SELECT date('now');
2018-06-16
Następujące polecenie oblicza ostatni dzień bieżącego miesiąca.
sqlite> SELECT date('now','start of month','+1 month','-1 day');
2083-06-30
Następujące polecenie oblicza datę i czas dla określonego znacznika czasu UNIX 1092941466.
sqlite> SELECT datetime(1529942466, 'unixepoch');
2018-06-25 16:01:06
Następujące polecenie oblicza datę i czas dla określonego znacznika czasu UNIX 1092941466 i wyrównuje lokalną strefę czasową.
sqlite> SELECT datetime(1529942466, 'unixepoch', 'localtime');
2018-06-25 18:01:06
Następujące polecenie oblicza bieżący znacznik czasu UNIX.
sqlite> SELECT strftime('%s','now');
1529154752
Następujące polecenie oblicza liczbę dni od uchwalenia Konstytucji 3 Maja.
sqlite> SELECT julianday('now') - julianday('1791-03-03');
83015.5516597568
Następujące polecenie oblicza liczbę sekund od określonego momentu w 2018 roku.
sqlite> SELECT strftime('%s','now') - strftime('%s','2018-01-01 00:00:00');
14390152
Następujące polecenie oblicza datę pierwszego wtorku października na bieżący rok.
sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2018-10-02
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;
1529156181.90101
Aby przekonwertować między UTC i wartością czasu lokalnego podczas formatowania daty, użyj modyfikatorów utc lub localtime w następujący sposób:
sqlite> SELECT time('12:00', 'localtime');
13:00:00
sqlite> SELECT time('12:00', 'utc');
11:00:00



Brak komentarzy:

Prześlij komentarz