W MariaDB, ADDDATE()
to wbudowana funkcja daty i czasu, która wykonuje arytmetykę dat.
Umożliwia zmianę daty poprzez określenie daty, jednostki do dodania i kwoty do dodania. Możesz przekazać kwotę ujemną, jeśli chcesz odjąć datę o określony przedział.
ADDDATE()
ma również składnię skrótów, która pozwala dodać określoną liczbę dni do daty.
Składnia
ADDDATE()
funkcja ma dwie składnie.
Składnia 1:
ADDDATE(expr,days)
Gdzie expr
to data i days
to liczba dni do dodania.
Składnia 2:
ADDDATE(date,INTERVAL expr unit)
Gdzie date
to data do zmiany, expr
to kwota do dodania, a unit
to jednostka do dodania (np. sekunda, minuta itp.).
Używając tej składni, ADDDATE()
jest synonimem DATE_ADD()
.
Przykład — składnia 1
Oto przykład użycia pierwszej składni:
SELECT ADDDATE('2021-05-01', 1);
Wynik:
+--------------------------+ | ADDDATE('2021-05-01', 1) | +--------------------------+ | 2021-05-02 | +--------------------------+
W razie potrzeby możemy również uwzględnić część czasu:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Wynik:
+-----------------------------------+ | ADDDATE('2021-05-01 10:00:00', 1) | +-----------------------------------+ | 2021-05-02 10:00:00 | +-----------------------------------+
Oto dwa alternatywne sposoby zrobienia tego samego:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
'2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";
Wynik:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-05-02 10:00:00 | 2021-05-02 10:00:00 | +---------------------+---------------------+
Przykład — składnia 2
Oto przykład użycia drugiej składni:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Wynik:
+-------------------------------------------------+ | ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) | +-------------------------------------------------+ | 2021-05-31 11:00:00 | +-------------------------------------------------+
Ta składnia pozwala nam dodawać do daty inne jednostki (tj. nie tylko dni). Tutaj dodałem godzinę do daty, ale równie dobrze mogłem dodać minuty, sekundy, miesiące, dni, lata itp. Czytaj dalej, aby zobaczyć przykłady.
Oto dwie alternatywne metody osiągnięcia tego samego wyniku, co w powyższym przykładzie:
SELECT
DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
'2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";
Wynik:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-05-31 11:00:00 | 2021-05-31 11:00:00 | +---------------------+---------------------+
Przedziały ujemne
Podanie ujemnego przedziału powoduje odjęcie tej kwoty od daty.
Przykład:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Wynik:
+--------------------------------------------------+ | ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) | +--------------------------------------------------+ | 2021-05-31 09:00:00 | +--------------------------------------------------+
Inne jednostki
Oto przykład, który dodaje interwał 1 do różnych jednostek daty i czasu:
SELECT
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Wynik (przy użyciu wyjścia pionowego):
YEAR: 2022-05-01 10:00:00 MONTH: 2021-06-01 10:00:00 DAY: 2021-05-02 10:00:00 HOUR: 2021-05-01 11:00:00 MINUTE: 2021-05-01 10:01:00 SECOND: 2021-05-01 10:00:01 MICROSECOND: 2021-05-01 10:00:00.000001
Jednostki złożone
Oto przykład wykorzystujący jednostki złożone:
SELECT
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Wynik:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+
Daty zerowe
Przekazywanie null
dla daty zwraca null
:
SELECT ADDDATE(null, INTERVAL 1 YEAR);
Wynik:
+--------------------------------+ | ADDDATE(null, INTERVAL 1 YEAR) | +--------------------------------+ | NULL | +--------------------------------+
Brakujący argument
Wywołanie ADDDATE()
z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT ADDDATE();
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1