poniedziałek, 3 września 2018

SQL - funkcje daty


SQL - funkcje daty

Poniższa tabela zawiera listę wszystkich ważnych funkcji związanych z datą i czasem dostępnych w SQL. Istnieją różne inne funkcje obsługiwane przez Twój RDBMS. Podana lista jest oparta na RDBMS MySQL.
L.p.
Opis funkcji
1
ADDDATE ()
Dodaje daty
2
ADDTIME()
Dodaje czas
3
CONVERT_TZ()
Konwertuje z jednej strefy czasowej na drugą
4
CURDATE()
Zwraca bieżącą datę
5
CURRENT_DATE(), CURRENT_DATE
Synonimy dla CURDATE()
6
CURRENT_TIME(), CURRENT_TIME
Synonimy dla CURTIME()
7
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
Synonimy dla NOW()
8
CURTIME()
Zwraca bieżący czas
9
DATE_ADD()
Dodaje dwie daty
10

DATE_FORMAT()
Formatuje datę zgodnie z określeniem
11
DATE_SUB()
Odejmuje dwie daty
12
DATE()
Wyodrębnia część daty wyrażenia date lub datetime
13
DATEDIFF()
Odejmuje dwie daty
14
DAY()
Synonim dla DAYOFMONTH()
15
DAYNAME()
Zwraca nazwę dnia tygodnia
16
DAYOFMONTH()
Zwraca dzień miesiąca (1-31)
17
DAYOFWEEK()
Zwraca indeks dnia z tygodnia
18
DAYOFYEAR ()
Zwraca dzień roku (1-366)
19
EXTRACT
Wyodrębnia część daty
20
FROM_DAYS()
Konwertuje numer dnia na datę
21
FROM_UNIXTIME()
Formatuje datę jako znacznik czasu UNIX
22
HOUR()
Wyodrębnia godzinę
23
LAST_DAY
Zwraca ostatni dzień miesiąca dla argumentu
24
LOCALTIME(), LOCALTIME
Synonim NOW()
25
LOCALTIMESTAMP, LOCALTIMESTAMP()
Synonim NOW()
26
MAKEDATE ()
Tworzy datę z roku i dnia roku
27
MAKETIME
MAKETIME ()
28
MICROSECOND()
Zwraca mikrosekundy z argumentu
29
MINUTE()
Zwraca minutę z argumentu
30
MONTH()
Zwróć miesiąc z podanej daty
31
MONTHNAME()
Zwraca nazwę miesiąca
32
NOW()
Zwraca bieżącą datę i godzinę
33
PERIOD_ADD()
Dodaje okres do roku-miesiąca
34
PERIOD_DIFF()
Zwraca liczbę miesięcy między okresami
35
QUARTER()
Zwraca kwartał z argumentu daty
36
SEC_TO_TIME()
Konwertuje sekundy na format "HH: MM: SS"
37
SECOND()
Zwraca drugi (0-59)
38
STR_TO_DATE()
Konwertuje ciąg na datę
39
SUBDATE()
Po wywołaniu trzema argumentami synonim DATE_SUB ()
40
SUBTIME()
Odejmuje czasy
41
SYSDATE()
Zwraca czas, w którym funkcja jest wykonywana
42
TIME_FORMAT()
Formatuje się jako czas
43
TIME_TO_SEC()
Zwraca argument przekonwertowany na sekundy
44
TIME()
Wyodrębnia część czasu wyrażenia
45
TIMEDIFF ()
Odejmuje czas
46
TIMESTAMP()
Za pomocą jednego argumentu funkcja zwraca wyrażenie daty lub daty. Z dwoma argumentami, suma argumentów
47
TIMESTAMPADD()
Dodaje interwał do wyrażenia datetime
48
TIMESTAMPDIFF()
Odejmuje odstęp czasu od wyrażenia datetime
49
TO_DAYS()
Zwraca argument daty przekonwertowany na dni
50
UNIX_TIMESTAMP()
Zwraca znacznik czasu UNIX
51
UTC_DATE()
Zwraca aktualną datę UTC
52
UTC_TIME()
Zwraca aktualny czas UTC
53
UTC_TIMESTAMP()
Zwraca bieżącą datę i godzinę UTC
54
WEEK()
Zwraca numer tygodnia
55
WEEKDAY()
Zwraca indeks dnia powszedniego
56
WEEKOFYEAR()
Zwraca tydzień kalendarzowy daty (1-53)
57
YEAR()
Zwraca rok
58
YEARWEEK()
Zwraca rok i tydzień

ADDDATE (date, INTERVAL expr unit), ADDDATE (wyraż, dni)

Po wywołaniu funkcji INTERVAL drugiego argumentu, ADDDATE() jest synonimem DATE_ADD(). Powiązana funkcja SUBDATE() jest synonimem funkcji DATE_SUB(). Aby uzyskać informacje na temat argumentu jednostki INTERVAL, zobacz dyskusję na temat DATE_ADD().
mysql> select date_add('2018-05-12', interval 31 day);
+-----------------------------------------+
| date_add('2018-05-12', interval 31 day) |
+-----------------------------------------+
| 2018-06-12                              |
+-----------------------------------------+
1 row in set (0.03 sec)

mysql> select adddate('2018-05-12', interval 31 day);
+----------------------------------------+
| adddate('2018-05-12', interval 31 day) |
+----------------------------------------+
| 2018-06-12                             |
+----------------------------------------+
1 row in set (0.00 sec)
Po wywołaniu wyrażenia w postaci drugiego argumentu, MySQL traktuje go jako liczbę całkowitą dni, które należy dodać do wyrażenia.
mysql> select adddate('2018-05-12', interval 31 day);
+----------------------------------------+
| adddate('2018-05-12', interval 31 day) |
+----------------------------------------+
| 2018-06-12                             |
+----------------------------------------+
1 row in set (0.00 sec)

ADDTIME (wyrażenie1, wyrażenie2)

ADDTIME() dodaje wyrażenie2 do wyrażenie1 i zwraca wynik. Wyrażenie1 jest wyrażeniem time lub datetime, podczas gdy wyrażenie 2 jest wyrażeniem time.
mysql> select addtime('2017-12-31 23:59:59.999999','1 1:1:1.000002');
+--------------------------------------------------------+
| addtime('2017-12-31 23:59:59.999999','1 1:1:1.000002') |
+--------------------------------------------------------+
| 2018-01-02 01:01:01.000001                             |
+--------------------------------------------------------+
1 row in set (0.02 sec)




CONVERT_TZ (dt, from_tz, to_tz)

To konwertuje wartość datetime dt ze strefy czasowej podanej przez from_tz do strefy czasowej podanej przez to_tz i zwraca wynikową wartość. Ta funkcja zwraca wartość NULL, jeśli argumenty są niepoprawne.
mysql> SELECT CONVERT_TZ('2018-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2018-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2018-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2018-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2018-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2018-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURDATE()

Zwraca bieżącą datę jako wartość w formacie "RRRR-MM-DD" lub RRRRMMDD, w zależności od tego, czy funkcja jest używana w ciągu, czy w kontekście numerycznym.
mysql> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2018-05-13 |
+------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------+
| CURDATE() + 0 |
+---------------+
|      20180513 |
+---------------+
1 row in set (0.00 sec)

CURRENT_DATE i CURRENT_DATE()

CURRENT_DATE i CURRENT_DATE () są synonimami CURDATE()

CURTIME()

Zwraca bieżący czas jako wartość w formacie "HH: MM: SS" lub HHMMSS, w zależności od tego, czy funkcja jest używana w ciągu, czy w kontekście numerycznym. Wartość jest wyrażona w bieżącej strefie czasowej.
mysql> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 20:19:39  |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------+
| CURTIME() + 0 |
+---------------+
|        202011 |
+---------------+
1 row in set (0.00 sec)

CURRENT_TIME i CURRENT_TIME()

CURRENT_TIME i CURRENT_TIME() są synonimami CURTIME().

CURRENT_TIMESTAMP i CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP i CURRENT_TIMESTAMP() są synonimami NOW().

DATE (wyrażenie)

Wyodrębnia część daty wyrażenia date lub wyrażenia datetime.
mysql> select date('2018-05-01 01:02:03');
+-----------------------------+
| date('2018-05-01 01:02:03') |
+-----------------------------+
| 2018-05-01                  |
+-----------------------------+
1 row in set (0.00 sec)

DATEDIFF(wyrażenie1, wyrażenie2)

DATEDIFF() zwraca wyrażenie1. wyrażenie2 wyrażone jako wartość w dniach od jednej daty do drugiej. Zarówno wyrażenie1, jak i wyrażenie2 to wyrażenia daty lub daty i czasu. W obliczeniach wykorzystywane są tylko części daty z wartości.
mysql> select datediff('2018-04-30 23:59:59','2018-05-01');
+----------------------------------------------+
| datediff('2018-04-30 23:59:59','2018-05-01') |
+----------------------------------------------+
|                                           -1 |
+----------------------------------------------+
1 row in set (0.00 sec)

DATE_ADD (data, INTERVAL wyrazenie jednostka ), DATE_SUB (data, INTERVAL wyrazenie jednostka )

Funkcje te wykonują arytmetyczną datę. Date jest DATETIME lub aktualna wartość określająca datę początkową. Wyrażenie to wyrażenie określające wartość przedziału, które ma być dodawane lub odejmowane od momentu początkowego. Wyrażenie jest ciągiem, może zaczynać się od "-" dla ujemnych przedziałów.
Jednostka to słowo wskazujące jednostki, w których należy interpretować wyrażenie.
Słowo kluczowe INTERVAL  i wyspecyfikowana jednostka nie  uwzględnia wielkości liter.
Poniższa tabela pokazuje oczekiwaną formę argumentu wyrazenie dla każdej wartości jednostki.
wartość jednostki
Oczekiwano exprFormat
MICROSECOND
MICROSECONDS
SECOND
SECONDS
MINUTE
MINUTES
HOUR
HOURS
DAY
DAYS
WEEK
WEEKS
MONTH
MONTHS
QUARTER
QUARTERS
YEAR
YEARS
SECOND_MICROSECOND
'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND
'MINUTES.MICROSECONDS'
MINUTE_SECOND
'MINUTES:SECONDS'
HOUR_MICROSECOND
'HOURS.MICROSECONDS'
HOUR_SECOND
'HOURS:MINUTES:SECONDS'
HOUR_MINUTE
'HOURS:MINUTES'
DAY_MICROSECOND
'DAYS.MICROSECONDS'
DAY_SECOND
'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE
'DAYS HOURS:MINUTES'
DAY_HOUR
'DAYS HOURS'
YEAR_MONTH
'YEARS-MONTHS'
Wartości QUARTER i WEEK są dostępne od wersji MySQL 5.0.0.
mysql> select date_add('2017-12-31 23:59:59',
    -> interval '1:1' minute_second);
+---------------------------------------------------------------+
| date_add('2017-12-31 23:59:59',
interval '1:1' minute_second) |
+---------------------------------------------------------------+
| 2018-01-01 00:01:00                                           |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add('2018-05-01', interval 1 hour);
+-----------------------------------------+
| date_add('2018-05-01', interval 1 hour) |
+-----------------------------------------+
| 2018-05-01 01:00:00                     |
+-----------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT (data, format)

To polecenie formatuje wartość daty zgodnie z łańcuchem formatu.
W ciągu formatującym można użyć następujących specyfikacji. Znak "%" jest wymagany przed znakami formatu.
L.p.
Specyfikator i opis
1
%a
Skrócona nazwa dnia tygodnia.
2
%b
Skrócona nazwa miesiąca.
3
%c
Miesiąc, numeryczny (0..12)
4
%D
Dzień miesiąca z angielskim przyrostkiem (0th, 1st, 2nd, 3rd,.)
5
%d
Dzień miesiąca, numeryczny (00. 31)
6
%e
Dzień miesiąca, numeryczny (0..31)
7
%f
Mikrosekundy (000000..999999)
8
%H
Godzina (00..23)
9
%h
Godzina (01..12)
10
%I
Godzina (01..12)
11
%i
Minuty, numeryczne (00..59)
12
%j
Dzień roku (001..366)
13
%k
Godzina (0..23)
14
%l
Godzina (1..12)
15
%M
Nazwa miesiąca (od stycznia do grudnia)
16
%m
Miesiąc, numeryczny (00. 12)
17
%p
Rano albo wieczorem (AM lub PM)
18
%r
Czas, 12 godzin (hh: mm: ss, po którym następuje AM lub PM)
19
%S
Sekundy (00..59)
20
%s
Sekundy (00..59)
21
%T
Czas, 24-godzinny (hh: mm: ss)
22
%U
Tydzień (00…53), gdzie niedziela jest pierwszym dniem tygodnia
23
%u
Tydzień (00…53), w którym poniedziałek jest pierwszym dniem tygodnia
24
%V
Tydzień (01…53), gdzie niedziela jest pierwszym dniem tygodnia; używane z %X
25
%v
Tydzień (01…53), w którym poniedziałek jest pierwszym dniem tygodnia; używane z %x
26
%W
Nazwa dnia tygodnia (niedziela .. sobota)
27
%w
Dzień tygodnia (0 = niedziela..6 = sobota)
28
%X
Rok tygodnia, w którym niedziela jest pierwszym dniem tygodnia, cyfrą, cztery cyfry; używane z %V
29
% x
Rok tygodnia, w którym poniedziałek jest pierwszym dniem tygodnia, cyfrą, cztery cyfry; używane z %v
30
%Y
Rok, numeryczny, cztery cyfry
31
%y
Rok, numeryczny (dwie cyfry)
32
%%
Znak .%. 
33
%x
x, dla jakiś.x. niewymienione powyżej
mysql> SELECT DATE_FORMAT('2018-05-01 22:23:00', '%W %M %Y');
+------------------------------------------------+
| DATE_FORMAT('2018-05-01 22:23:00', '%W %M %Y') |
+------------------------------------------------+
| Tuesday May 2018                               |
+------------------------------------------------+
1 row in set (0.02 sec)

mysql> SELECT DATE_FORMAT('2018-05-01 22:23:00',
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('2018-05-01 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 2                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_SUB (data, INTERVAL jednostka)

Jest to podobne do funkcji DATE_ADD().

Day(data)

DAY() jest synonimem funkcji DAYOFMONTH().

DAYNAME (data)

Zwraca nazwę dnia tygodnia dla daty.
mysql> select dayname('2018-05-13');
+-----------------------+
| dayname('2018-05-13') |
+-----------------------+
| Sunday                |
+-----------------------+
1 row in set (0.00 sec)

DAYOFMONTH(data)

Zwraca dzień miesiąca dla daty w zakresie od 0 do 31.
mysql> select dayofmonth('2018-05-13');
+--------------------------+
| dayofmonth('2018-05-13') |
+--------------------------+
|                       13 |
+--------------------------+
1 row in set (0.02 sec)

DAYOFWEEK(data)

Zwraca indeks dnia tygodnia (1 = niedziela, 2 = poniedziałek,., 7 = sobota). Te wartości indeksu odpowiadają standardowi ODBC.
mysql> select dayofweek('2018-05-13');
+-------------------------+
| dayofweek('2018-05-13') |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

DAYOFYEAR(data)

Zwraca dzień roku na datę w zakresie od 1 do 366.
mysql> select dayofyear('2018-05-13');
+-------------------------+
| dayofyear('2018-05-13') |
+-------------------------+
|                     133 |
+-------------------------+
1 row in set (0.00 sec)

EXTRACT(jednostka FROM data)

Funkcja EXTRACT() używa tego samego rodzaju specyfikatorów jednostek co DATE_ADD() lub DATE_SUB(), ale wyodrębnia części z daty zamiast wykonywania arytmetyki daty.
mysql> SELECT EXTRACT(YEAR FROM '2018-05-13');
+---------------------------------+
| EXTRACT(YEAR FROM '2018-05-13') |
+---------------------------------+
|                            2018 |
+---------------------------------+
1 row in set (0.00 sec)

mysql> SELECT EXTRACT(YEAR_MONTH FROM '2018-05-13 01:02:03');
+------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2018-05-13 01:02:03') |
+------------------------------------------------+
|                                         201805 |
+------------------------------------------------+
1 row in set (0.00 sec)

FROM_DAYS (N)

Biorąc pod uwagę liczbę dni N, zwraca wartość DATE.
mysql> SELECT FROM_DAYS(736669);
+-------------------+
| FROM_DAYS(736669) |
+-------------------+
| 2016-12-06        |
+-------------------+
1 row in set (0.02 sec)
Uwaga: Używaj FROM_DAYS() z ostrożnością w starych datach. Nie jest przeznaczony do użytku z wartościami, które poprzedzają pojawienie się kalendarza gregoriańskiego (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, format)

Zwraca reprezentację argumentu unix_timestamp jako wartość w formacie "RRRR-MM-DD GG: MM: SS lub YYYYMMDDHHMMSS, w zależności od tego, czy funkcja jest używana w ciągu, czy w kontekście numerycznym. Wartość jest wyrażona w bieżącej strefie czasowej. Argument unix_timestamp to wewnętrzne wartości znacznika czasu, które są tworzone przez funkcję UNIX_TIMESTAMP().
Jeśli format jest podany, wynik jest formatowany zgodnie z łańcuchem formatu, który jest używany w taki sam sposób, jak podano w pozycji dotyczącej funkcji DATE_FORMAT().
mysql> SELECT FROM_UNIXTIME(1476996580);
+---------------------------+
| FROM_UNIXTIME(1476996580) |
+---------------------------+
| 2016-10-20 22:49:40       |
+---------------------------+
1 row in set (0.00 sec)

HOUR(czas)

Zwraca godzinę z podanego czasu. Zakres wartości zwracanej wynosi od 0 do 23 dla wartości czasu. Jednak zakres wartości TIME jest w rzeczywistości znacznie większy, więc HOUR może zwracać wartości większe niż 23.
mysql> SELECT HOUR('10:05:03');
+------------------+
| HOUR('10:05:03') |
+------------------+
|               10 |
+------------------+
1 row in set (0.03 sec)

LAST_DAY (data)

Pobiera datę lub wartość datetime i zwraca odpowiednią wartość dla ostatniego dnia miesiąca. Zwraca wartość NULL, jeśli argument jest niepoprawny.
mysql> SELECT LAST_DAY('2018-05-12');
+------------------------+
| LAST_DAY('2018-05-12') |
+------------------------+
| 2018-05-31             |
+------------------------+
1 row in set (0.00 sec)

LOCALTIME i LOCALTIME()

LOCALTIME i LOCALTIME() są synonimami NOW().

LOCALTIMESTAMP i LOCALTIMESTAMP()

LOCALTIMESTAMP i LOCALTIMESTAMP() są synonimami NOW().

MAKEDATE(rok, dzieńroku)

Zwraca datę, dane wartości na dany rok i na rok. Wartość dzieńroku musi być większa od 0 lub wynik będzie NULL.
mysql> select makedate(2018,31), makedate(2018,32);
+-------------------+-------------------+
| makedate(2018,31) | makedate(2018,32) |
+-------------------+-------------------+
| 2018-01-31        | 2018-02-01        |
+-------------------+-------------------+
1 row in set (0.00 sec)

MAKETIME (godzina, minuta, sekunda)

Zwraca wartość czasu obliczoną na podstawie argumentów godzin, minut i sekund.
mysql> SELECT MAKETIME(13,15,30);
+--------------------+
| MAKETIME(13,15,30) |
+--------------------+
| 13:15:30           |
+--------------------+
1 row in set (0.00 sec)

MICROSECOND (wyrażenie)

Zwraca mikrosekundy z wyrażenia czasu lub datetime (wyraż) jako liczby z zakresu od 0 do 999999.
mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MINUTE (czas)

Zwraca minutę dla czasu w zakresie od 0 do 59.
mysql> SELECT MINUTE('18-05-13 10:10:03');
+-----------------------------+
| MINUTE('18-05-13 10:10:03') |
+-----------------------------+
|                          10 |
+-----------------------------+
1 row in set (0.00 sec)

MONTH (data)

Zwraca miesiąc dla daty w zakresie od 0 do 12.
mysql> select month('2018-05-13');
+---------------------+
| month('2018-05-13') |
+---------------------+
|                   5 |
+---------------------+
1 row in set (0.00 sec)
MONTHNAME (data)
Zwraca pełną nazwę miesiąca dla daty.
mysql> select monthname('2018-05-013');
+--------------------------+
| monthname('2018-05-013') |
+--------------------------+
| May                      |
+--------------------------+
1 row in set (0.00 sec)

NOW()

Zwraca bieżącą datę i godzinę jako wartość w formacie "RRRR-MM-DD HH: MM: SS" lub RRRRMMDDHHMMSS, w zależności od tego, czy funkcja jest używana w łańcuchu, czy w kontekście numerycznym. Ta wartość jest wyrażona w bieżącej strefie czasowej.
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2018-05-13 21:41:38 |
+---------------------+
1 row in set (0.00 sec)

PERIOD_ADD (P, N)

Dodaje N miesięcy do okresu P (w formacie RRRR lub RRRRMM). Zwraca wartość w formacie RRRRMM. Zauważ, że argument okresu P nie jest wartością daty.
mysql> select period_add(1801,2);
+--------------------+
| period_add(1801,2) |
+--------------------+
|             201803 |
+--------------------+
1 row in set (0.00 sec)
PERIOD_DIFF (P1, P2)
Zwraca liczbę miesięcy między okresami P1 i P2. Okresy P1 i P2 powinny mieć format YYMM lub RRRRMM. Zauważ, że argumenty okresu P1 i P2 nie są wartościami daty.
mysql> select period_diff(1802, 1703);
+-------------------------+
| period_diff(1802, 1703) |
+-------------------------+
|                      11 |
+-------------------------+
1 row in set (0.00 sec)

QUARTER(data)

Zwraca kwartał roku z daty, w zakresie od 1 do 4.
mysql> select quarter('2018-05-13');
+-----------------------+
| quarter('2018-05-13') |
+-----------------------+
|                     2 |
+-----------------------+
1 row in set (0.00 sec)

SECOND(czas)

Zwraca sekundę na czas, w zakresie od 0 do 59.
mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEC_TO_TIME (sekundy)

Zwraca argument sekundy, skonwertowany na godziny, minuty i sekundy, jako wartość w formacie "HH: MM: SS" lub HHMMSS, w zależności od tego, czy funkcja jest używana w łańcuchu, czy w kontekście liczbowym.
mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378)                                       |
+---------------------------------------------------------+
| 00:39:38                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

STR_TO_DATE (str, format)

Jest to odwrotność funkcji DATE_FORMAT(). Funkcja STR_TO_DATE() zwraca wartość DATETIME, jeśli ciąg formatu zawiera zarówno części daty, jak i godziny. Inaczej zwraca wartość DATE lub TIME, jeśli ciąg zawiera tylko części daty lub czasu.
mysql> SELECT STR_TO_DATE('05/31/2018', '%m/%d/%Y');
+---------------------------------------+
| STR_TO_DATE('05/31/2018', '%m/%d/%Y') |
+---------------------------------------+
| 2018-05-31                            |
+---------------------------------------+
1 row in set (0.03 sec)

SUBDATE (data, INTERVAL expr unit) i SUBDATE (wyraż, dni)

Po wywołaniu z drugim argumentem INTERVAL SUBDATE() jest synonimem dla DATE_SUB(). Aby uzyskać informacje na temat argumentu jednostki INTERVAL, zobacz dyskusję na temat DATE_ADD().
mysql> select date_sub('2018-05-13', interval 31 day);
+-----------------------------------------+
| date_sub('2018-05-13', interval 31 day) |
+-----------------------------------------+
| 2018-04-12                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> select subdate('2018-05-13',interval 31 day);
+---------------------------------------+
| subdate('2018-05-13',interval 31 day) |
+---------------------------------------+
| 2018-04-12                            |
+---------------------------------------+
1 row in set (0.00 sec)

SUBTIME (wyrażenie1, wyrażenie2)

Funkcja SUBTIME() zwraca wyrażenie1. wyrażenie2 wyrażone jako wartość w tym samym formacie, co wyrażenie1. Wartość wyraż1 jest wyrażeniem time lub datetime, natomiast wartość wyraż2 jest wyrażeniem time.
mysql> SELECT SUBTIME('2018-05-13 23:59:59.999999','1 1:1:1.000002');
+--------------------------------------------------------+
| SUBTIME('2018-05-13 23:59:59.999999','1 1:1:1.000002') |
+--------------------------------------------------------+
| 2018-05-12 22:58:58.999997                             |
+--------------------------------------------------------+
1 row in set (0.00 sec)

SYSDATE()

Zwraca bieżącą datę i godzinę jako wartość w formacie "RRRR-MM-DD HH: MM: SS" lub RRRRMMDDHHMMSS, w zależności od tego, czy funkcja jest używana w ciągu, czy w kontekście numerycznym.
mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2018-05-13 22:03:42 |
+---------------------+
1 row in set (0.00 sec)

TIME (wyraż)

Wyodrębnia część czasu wyrażenia wyraż czasu lub daty i zwraca ją jako ciąg znaków.
mysql> SELECT TIME('2018-05-13 01:02:03');
+-----------------------------+
| TIME('2018-05-13 01:02:03') |
+-----------------------------+
| 01:02:03                    |
+-----------------------------+
1 row in set (0.00 sec)

TIMEDIFF (wyrażenie1, wyrażenie2)

Funkcja TIMEDIFF() zwraca wyrażenie1. wyrażenie2 wyrażone jako wartość czasu. Te wyrażenia wyrażenie1 i wyrażenie2 są wyrażeniami czasu lub daty i czasu, ale obie muszą być tego samego typu.
mysql> SELECT TIMEDIFF('2017-12-31 23:59:59.000001','2017-12-30 01:01:01.000002');
+---------------------------------------------------------------------+
| TIMEDIFF('2017-12-31 23:59:59.000001','2017-12-30 01:01:01.000002') |
+---------------------------------------------------------------------+
| 46:58:57.999999                                                     |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
1 row in set (0.00 sec)

TIMESTAMP (wyrażenie), TIMESTAMP (wyrażenie1, wyrażenie2)

Za pomocą pojedynczego argumentu ta funkcja zwraca wyrażenie daty lub wyrażenie daty i godziny jako wartość czasu. Z dwoma argumentami, dodaje wyr2 czasu do datetime data lub wyrażenie wyr1 i zwraca wynik jako wartość datetime.
mysql> SELECT TIMESTAMP('2018-05-13');
+-------------------------+
| TIMESTAMP('2018-05-13') |
+-------------------------+
| 2018-05-13 00:00:00     |
+-------------------------+
1 row in set (0.00 sec)

TIMESTAMPADD (jednostka, interwał, datetime_expr)

Ta funkcja dodaje interwał wyrażenia całkowitoliczbowego do daty lub wyrażenia datetime_expr. Jednostka interwału jest podana przez argument jednostkowy, który powinien być jedną z następujących wartości:
  • FRAC_SECOND
  • SECOND, MINUTE
  • HOUR, DAY
  • WEEK
  • MONTH
  • QUARTER lub
  • YEAR
Wartość jednostki może być określona za pomocą jednego ze słów kluczowych, jak pokazano, lub z prefiksem SQL_TSI_.
Na przykład DAY i SQL_TSI_DAY oba są legalne.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2018-01-02');
+-------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2018-01-02') |
+-------------------------------------+
| 2018-01-02 00:01:00                 |
+-------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF (jednostka, datetime_expr1, datetime_expr2)

Zwraca różnicę całkowitą między wyrażeniami date lub datetime datetime_expr1 i datetime_expr2. Jednostka wyniku jest podana przez jednostkę argumentu. Prawne wartości jednostki są takie same, jak te wymienione w opisie funkcji TIMESTAMPADD ().
mysql> SELECT TIMESTAMPDIFF(MONTH,'2018-02-01','2018-05-01');
+------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2018-02-01','2018-05-01') |
+------------------------------------------------+
|                                              3 |
+------------------------------------------------+
1 row in set (0.00 sec)



TIME_FORMAT (czas, format)

Ta funkcja jest używana podobnie jak funkcja DATE_FORMAT(), ale ciąg formatu może zawierać specyfikatory formatu tylko dla godzin, minut i sekund.
Jeśli wartość czasu zawiera część godzinną większą niż 23, specyfikatory formatu %H i %k godzin generują wartość większą niż zwykły zakres od 0 do 23. Parametry formatu w innej godzinie generują wartość godziny modulo 12.
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+--------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l') |
+--------------------------------------------+
| 100 100 04 04 4                            |
+--------------------------------------------+
1 row in set (0.03 sec)

TIME_TO_SEC (czas)

Zwraca argument czasu skonwertowany na sekundy.
mysql> SELECT TIME_TO_SEC('10:11:00');
+-------------------------+
| TIME_TO_SEC('10:11:00') |
+-------------------------+
|                   36660 |
+-------------------------+
1 row in set (0.01 sec)

TO_DAYS(data)

Biorąc pod uwagę datę, zwraca numer dnia (liczbę dni od roku 0).
mysql> SELECT TO_DAYS(980501);
+-----------------+
| TO_DAYS(980501) |
+-----------------+
|          729875 |
+-----------------+
1 row in set (0.00 sec)

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(data)

Jeśli zostanie wywołana bez argumentu, funkcja zwróci znacznik czasu Unix (sekundy od '1970-01-01 00:00:00' UTC) jako liczbę całkowitą bez znaku. Jeśli funkcja UNIX_TIMESTAMP() zostanie wywołana z argumentem daty, zwraca wartość argumentu jako sekundy od "1970-01-01 00:00:00" UTC. data może być ciągiem DATE, łańcuchem DATETIME, TIMESTAMP lub liczbą w formacie YYMMDD lub YYYYMMDD.
mysql> SELECT UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1526320928 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('2018-05-12 22:23:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2018-05-12 22:23:00') |
+---------------------------------------+
|                            1526156580 |
+---------------------------------------+
1 row in set (0.00 sec)

UTC_DATE, UTC_DATE()

Zwraca bieżącą datę UTC jako wartość w formacie "RRRR-MM-DD" lub RRRRMMDD, w zależności od tego, czy funkcja jest używana w łańcuchu, czy w kontekście liczbowym.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+------------+----------------+
| UTC_DATE() | UTC_DATE() + 0 |
+------------+----------------+
| 2018-05-14 |       20180514 |
+------------+----------------+
1 row in set (0.03 sec)

UTC_TIME, UTC_TIME()

Zwraca bieżący czas UTC jako wartość w formacie "HH: MM: SS" lub HHMMSS, w zależności od tego, czy funkcja jest używana w łańcuchu, czy w kontekście numerycznym.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+------------+----------------+
| UTC_TIME() | UTC_TIME() + 0 |
+------------+----------------+
| 18:06:23   |         180623 |
+------------+----------------+
1 row in set (0.00 sec)

UTC_TIMESTAMP, UTC_TIMESTAMP()

Zwraca bieżącą datę i godzinę UTC jako wartość w formacie "RRRR-MM-DD GG: MM: SS" lub w formacie RRRRMMDDGGMMSS, w zależności od tego, czy funkcja jest używana w łańcuchu, czy w kontekście liczbowym.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------+---------------------+
| UTC_TIMESTAMP()     | UTC_TIMESTAMP() + 0 |
+---------------------+---------------------+
| 2018-05-14 18:19:51 |      20180514181951 |
+---------------------+---------------------+
1 row in set (0.00 sec)

WEEK (data [, tryb])

Ta funkcja zwraca numer tygodnia dla daty. Dwuargumentowa forma WEEK() pozwala ci określić, czy tydzień rozpoczyna się w niedzielę, czy w poniedziałek i czy zwracana wartość powinna być w zakresie od 0 do 53 lub od 1 do 53. Jeśli argument trybu zostanie pominięty, używana jest wartość zmiennej systemowej default_week_format
Tryb
Pierwszy dzień tygodnia
Zasięg
Tydzień 1 to pierwszy tydzień.
0
niedziela
0-53
w niedzielę tego roku
1
poniedziałek
0-53
z więcej niż 3 dni w tym roku
2
niedziela
1-53
w niedzielę tego roku
3
poniedziałek
1-53
z więcej niż 3 dni w tym roku
4
niedziela
0-53
z więcej niż 3 dni w tym roku
5
poniedziałek
0-53
w poniedziałek w tym roku
6
niedziela
1-53
z więcej niż 3 dni w tym roku
7
poniedziałek
1-53
w poniedziałek w tym roku
mysql> SELECT WEEK('2018-05-13');
+--------------------+
| WEEK('2018-05-13') |
+--------------------+
|                 19 |
+--------------------+
1 row in set (0.00 sec)

WEEKDAY(data)

Zwraca indeks dnia tygodnia dla daty (0 = poniedziałek, 1 = wtorek, .6 = niedziela).
mysql> SELECT WEEKDAY('2018-05-14 20:23:00');
+--------------------------------+
| WEEKDAY('2018-05-14 20:23:00') |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set (0.00 sec)

WEEKOFYEAR (data)

Zwraca tydzień kalendarzowy daty jako liczbę z zakresu od 1 do 53. WEEKOFYEAR() jest funkcją zgodności równoważną WEEK(date, 3).
mysql> SELECT WEEKOFYEAR('2018-05-14');
+--------------------------+
| WEEKOFYEAR('2018-05-14') |
+--------------------------+
|                       20 |
+--------------------------+
1 row in set (0.00 sec)

YEAR(data)

Zwraca rok dla daty w zakresie od 1000 do 9999 lub 0 dla zera. data.
mysql> SELECT YEAR('18-05-14');
+------------------+
| YEAR('18-05-14') |
+------------------+
|             2018 |
+------------------+
1 row in set (0.00 sec)

YEARWEEK(data), YEARWEEK(data, tryb)

Zwraca rok i tydzień dla daty. Argument mode działa dokładnie tak jak argument mode dla funkcji WEEK(). Rok w wyniku może być inny niż rok w argumencie daty za pierwszy i ostatni tydzień roku.
mysql> SELECT YEARWEEK('2018-01-01');
+------------------------+
| YEARWEEK('2018-01-01') |
+------------------------+
|                 201753 |
+------------------------+
1 row in set (0.00 sec)
Uwaga: Numer tygodnia różni się od tego, co zwróci funkcja WEEK() dla opcjonalnych argumentów 0 lub 1, ponieważ WEEK() zwraca tydzień w kontekście danego roku.


Brak komentarzy:

Prześlij komentarz