W MariaDB, ADD_MONTHS()
to wbudowana funkcja daty i czasu, która dodaje do daty podaną liczbę miesięcy i zwraca wynik.
Data może być wartością daty, daty i godziny lub znacznika czasu.
Ta funkcja została wprowadzona w MariaDB 10.6.1 w celu zwiększenia zgodności z Oracle. Istnieje co najmniej 6 innych sposobów dodawania miesięcy do daty w MariaDB.
Składnia
Składnia wygląda tak:
ADD_MONTHS(date, months)
Gdzie date
to data i months
to liczba miesięcy, które należy do niej dodać.
Przykład
Oto przykład:
SELECT ADD_MONTHS('2020-01-01', 3);
Wynik:
+-----------------------------+ | ADD_MONTHS('2020-01-01', 3) | +-----------------------------+ | 2020-04-01 | +-----------------------------+
Odejmij miesiące
Aby odjąć miesiące od daty, użyj wartości ujemnej dla drugiego argumentu.
Przykład:
SELECT ADD_MONTHS('2020-01-01', -3);
Wynik:
+------------------------------+ | ADD_MONTHS('2020-01-01', -3) | +------------------------------+ | 2019-10-01 | +------------------------------+
Kontekst numeryczny
W razie potrzeby datę można podać w postaci liczbowej:
SELECT ADD_MONTHS(20200101, 3);
Wynik:
+-------------------------+ | ADD_MONTHS(20200101, 3) | +-------------------------+ | 2020-04-01 | +-------------------------+
Nieprawidłowe daty
Jeśli data jest nieprawidłowa, ADD_MONTHS()
zwraca null
z ostrzeżeniem:
SELECT ADD_MONTHS('2020-01-51', 3);
Wynik:
+-----------------------------+ | ADD_MONTHS('2020-01-51', 3) | +-----------------------------+ | NULL | +-----------------------------+ 1 row in set, 1 warning (0.003 sec)
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Argumenty zerowe
ADD_MONTHS()
zwraca null
jeśli jakikolwiek argument jest null
:
SELECT ADD_MONTHS('2020-01-01', null);
Wynik:
+--------------------------------+ | ADD_MONTHS('2020-01-01', null) | +--------------------------------+ | NULL | +--------------------------------+
Nieprawidłowa liczba argumentów
Przekazanie nieprawidłowej liczby argumentów skutkuje błędem:
SELECT ADD_MONTHS(3);
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