MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie LAST_DAY() in MariaDB funktioniert

In MariaDB, LAST_DAY() ist eine integrierte Datums- und Uhrzeitfunktion, die den letzten Tag des Monats für ein bestimmtes Datum zurückgibt.

Es akzeptiert ein Argument, nämlich das Datum, für das Sie den letzten Tag des Monats finden möchten.

Syntax

Die Syntax lautet wie folgt:

LAST_DAY(date)

Wobei date ist der Datumsausdruck, für den Sie den letzten Tag des Monats finden möchten.

Beispiel

Hier ist ein Beispiel:

SELECT LAST_DAY('2030-02-01');

Ergebnis:

+------------------------+
| LAST_DAY('2030-02-01') |
+------------------------+
| 2030-02-28             |
+------------------------+

In diesem Fall verwenden wir ein Datum im Februar. Wie sich herausstellt, hat der Februar in diesem Jahr 28 Tage.

Folgendes passiert, wenn wir das Datum auf das nächste Schaltjahr erhöhen:

SELECT LAST_DAY('2032-02-01');

Ergebnis:

+------------------------+
| LAST_DAY('2032-02-01') |
+------------------------+
| 2032-02-29             |
+------------------------+

Datum/Uhrzeit-Werte

Es funktioniert auch mit datetime-Werten:

SELECT LAST_DAY('2030-02-01 10:30:45');

Ergebnis:

+---------------------------------+
| LAST_DAY('2030-02-01 10:30:45') |
+---------------------------------+
| 2030-02-28                      |
+---------------------------------+

Nulldaten

Nulldaten führen zu null .

Beispiel:

SELECT LAST_DAY('0000-00-00');

Ergebnis:

+------------------------+
| LAST_DAY('0000-00-00') |
+------------------------+
| NULL                   |
+------------------------+

Numerische Daten

Es ist auch möglich, Datumsangaben als Zahl zu übergeben, sofern es als Datum sinnvoll ist.

Beispiel

SELECT LAST_DAY(20301125);

Ergebnis:

+--------------------+
| LAST_DAY(20301125) |
+--------------------+
| 2030-11-30         |
+--------------------+

Oder sogar das Folgende (das eine zweistellige Jahreszahl verwendet):

SELECT LAST_DAY(301125);

Ergebnis:

+------------------+
| LAST_DAY(301125) |
+------------------+
| 2030-11-30       |
+------------------+

Aber als Date muss es Sinn machen. Folgendes passiert, wenn ich den Tagesteil auf einen ungültigen Tag erhöhe:

SELECT LAST_DAY(20301135);

Ergebnis:

+--------------------+
| LAST_DAY(20301135) |
+--------------------+
| NULL               |
+--------------------+
1 row in set, 1 warning (0.000 sec)

Wir können die Warnung wie folgt überprüfen:

SHOW WARNINGS;

Ergebnis:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

Andere Trennzeichen

Sie können andere Trennzeichen für das Datum verwenden. MariaDB ist ziemlich nachsichtig, wenn es um Trennzeichen bei Datumsangaben geht. Hier sind einige gültige Beispiele:

SELECT 
    LAST_DAY('2030/06/25'),
    LAST_DAY('2030,06,25'),
    LAST_DAY('2030:06:25'),
    LAST_DAY('2030;06!25');

Ergebnis (bei vertikaler Ausgabe):

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

Aktuelles Datum

Wir können NOW() übergeben als datetime-Argument, um das aktuelle Datum zu verwenden:

SELECT 
    NOW(),
    LAST_DAY(NOW());

Ergebnis:

+---------------------+-----------------+
| NOW()               | LAST_DAY(NOW()) |
+---------------------+-----------------+
| 2021-05-18 09:39:01 | 2021-05-31      |
+---------------------+-----------------+

Ungültige Argumente

Wenn ein ungültiges Argument übergeben wird, LAST_DAY() gibt null zurück :

SELECT LAST_DAY('2030-65-78');

Ergebnis:

+------------------------+
| LAST_DAY('2030-65-78') |
+------------------------+
| NULL                   |
+------------------------+
1 row in set, 1 warning (0.000 sec)

Überprüfen Sie die Warnung:

SHOW WARNINGS;

Ergebnis:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Fehlendes Argument

Aufruf von LAST_DAY() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT LAST_DAY();

Ergebnis:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'

Und noch ein Beispiel:

SELECT LAST_DAY('2030-12-10', '2031-12-10');

Ergebnis:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LAST_DAY'