W MariaDB, LAST_DAY()
to wbudowana funkcja daty i czasu, która zwraca ostatni dzień miesiąca dla podanej daty.
Przyjmuje jeden argument, którym jest data, dla której chcesz znaleźć ostatni dzień miesiąca.
Składnia
Składnia wygląda tak:
LAST_DAY(date)
Gdzie date
to wyrażenie daty, dla którego chcesz znaleźć ostatni dzień miesiąca.
Przykład
Oto przykład:
SELECT LAST_DAY('2030-02-01');
Wynik:
+------------------------+ | LAST_DAY('2030-02-01') | +------------------------+ | 2030-02-28 | +------------------------+
W tym przypadku używamy daty w lutym. Jak się okazuje, luty ma w tym roku 28 dni.
Oto, co się stanie, jeśli zwiększymy datę do następnego roku przestępnego:
SELECT LAST_DAY('2032-02-01');
Wynik:
+------------------------+ | LAST_DAY('2032-02-01') | +------------------------+ | 2032-02-29 | +------------------------+
Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT LAST_DAY('2030-02-01 10:30:45');
Wynik:
+---------------------------------+ | LAST_DAY('2030-02-01 10:30:45') | +---------------------------------+ | 2030-02-28 | +---------------------------------+
Zero dat
Zerowe daty dają w wyniku null
.
Przykład:
SELECT LAST_DAY('0000-00-00');
Wynik:
+------------------------+ | LAST_DAY('0000-00-00') | +------------------------+ | NULL | +------------------------+
Daty numeryczne
Możliwe jest również przekazywanie dat jako liczby, o ile ma to sens jako data.
Przykład
SELECT LAST_DAY(20301125);
Wynik:
+--------------------+ | LAST_DAY(20301125) | +--------------------+ | 2030-11-30 | +--------------------+
Lub nawet następujący (który używa dwucyfrowego roku):
SELECT LAST_DAY(301125);
Wynik:
+------------------+ | LAST_DAY(301125) | +------------------+ | 2030-11-30 | +------------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:
SELECT LAST_DAY(20301135);
Wynik:
+--------------------+ | LAST_DAY(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
Możemy sprawdzić ostrzeżenie w następujący sposób:
SHOW WARNINGS;
Wynik:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Inne ograniczniki
Możesz użyć innych ograniczników daty. MariaDB jest dość wyrozumiała, jeśli chodzi o ograniczniki dat. Oto kilka poprawnych przykładów:
SELECT
LAST_DAY('2030/06/25'),
LAST_DAY('2030,06,25'),
LAST_DAY('2030:06:25'),
LAST_DAY('2030;06!25');
Wynik (przy użyciu wyjścia pionowego):
LAST_DAY('2030/06/25'): 2030-06-30 LAST_DAY('2030,06,25'): 2030-06-30 LAST_DAY('2030:06:25'): 2030-06-30 LAST_DAY('2030;06!25'): 2030-06-30
Aktualna data
Możemy przekazać NOW()
jako argument datetime, aby użyć bieżącej daty:
SELECT
NOW(),
LAST_DAY(NOW());
Wynik:
+---------------------+-----------------+ | NOW() | LAST_DAY(NOW()) | +---------------------+-----------------+ | 2021-05-18 09:39:01 | 2021-05-31 | +---------------------+-----------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu LAST_DAY()
zwraca null
:
SELECT LAST_DAY('2030-65-78');
Wynik:
+------------------------+ | LAST_DAY('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
Sprawdź ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Brakujący argument
Wywołanie LAST_DAY()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT LAST_DAY();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'
I kolejny przykład:
SELECT LAST_DAY('2030-12-10', '2031-12-10');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'