sql >> Database >  >> RDS >> MariaDB

Hoe LAST_DAY() werkt in MariaDB

In MariaDB, LAST_DAY() is een ingebouwde datum- en tijdfunctie die de laatste dag van de maand voor een bepaalde datum retourneert.

Het accepteert één argument, namelijk de datum waarvoor u de laatste dag van de maand wilt vinden.

Syntaxis

De syntaxis gaat als volgt:

LAST_DAY(date)

Waar date is de datumuitdrukking waarvoor u de laatste dag van de maand wilt vinden.

Voorbeeld

Hier is een voorbeeld:

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

Resultaat:

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

In dit geval gebruiken we een datum in februari. Het blijkt dat februari in dat jaar 28 dagen heeft.

Dit gebeurt er als we de datum verhogen naar het volgende schrikkeljaar:

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

Resultaat:

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

Datum/tijd-waarden

Het werkt ook met datetime-waarden:

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

Resultaat:

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

Nul datums

Nuldatums resulteren in null .

Voorbeeld:

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

Resultaat:

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

Numerieke datums

Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.

Voorbeeld

SELECT LAST_DAY(20301125);

Resultaat:

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

Of zelfs het volgende (met een jaartal van twee cijfers):

SELECT LAST_DAY(301125);

Resultaat:

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

Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:

SELECT LAST_DAY(20301135);

Resultaat:

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

We kunnen de waarschuwing als volgt controleren:

SHOW WARNINGS;

Resultaat:

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

Andere scheidingstekens

U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:

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

Resultaat (met verticale uitvoer):

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

Huidige datum

We kunnen NOW() doorgeven als het datetime-argument om de huidige datum te gebruiken:

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

Resultaat:

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

Ongeldige argumenten

Wanneer een ongeldig argument is doorgegeven, LAST_DAY() retourneert null :

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

Resultaat:

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

Controleer de waarschuwing:

SHOW WARNINGS;

Resultaat:

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

Ontbrekend argument

Bellen LAST_DAY() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT LAST_DAY();

Resultaat:

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

En nog een voorbeeld:

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

Resultaat:

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

  1. AWS Database Migratie Service DMS

  2. Ontsnappen aan een enkel aanhalingsteken in PHP bij het invoegen in MySQL

  3. Identiteitskolomwaarde springt plotseling naar 1001 in sql-server

  4. Cheatsheet voor PostgreSQL-configuratie