sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer LAST_DAY() i MariaDB

I MariaDB, LAST_DAY() er en indbygget dato- og tidsfunktion, der returnerer den sidste dag i måneden for en given dato.

Den accepterer ét argument, som er den dato, som du vil finde den sidste dag i måneden.

Syntaks

Syntaksen ser sådan ud:

LAST_DAY(date)

Hvor date er det datoudtryk, som du vil finde den sidste dag i måneden.

Eksempel

Her er et eksempel:

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

Resultat:

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

I dette tilfælde bruger vi en dato i februar. Som det viser sig, har februar 28 dage i det år.

Her er, hvad der sker, hvis vi øger datoen til det næste skudår:

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

Resultat:

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

Dato-tidsværdier

Det fungerer også med datetime-værdier:

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

Resultat:

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

Nul datoer

Nul datoer resulterer i null .

Eksempel:

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

Resultat:

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

Numeriske datoer

Det er også muligt at videregive datoer som et tal, så længe det giver mening som en dato.

Eksempel

SELECT LAST_DAY(20301125);

Resultat:

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

Eller endda følgende (som bruger et tocifret årstal):

SELECT LAST_DAY(301125);

Resultat:

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

Men det skal give mening som en date. Her er, hvad der sker, hvis jeg øger dagsdelen til en ugyldig dag:

SELECT LAST_DAY(20301135);

Resultat:

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

Vi kan tjekke advarslen sådan her:

SHOW WARNINGS;

Resultat:

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

Andre afgrænsninger

Du kan bruge andre skilletegn for datoen. MariaDB er ret tilgivende, når det kommer til afgrænsninger på datoer. Her er nogle gyldige eksempler:

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

Resultat (ved hjælp af lodret output):

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

Aktuel dato

Vi kan sende NOW() som datetime-argument for at bruge den aktuelle dato:

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

Resultat:

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

Ugyldige argumenter

Når et ugyldigt argument sendes, LAST_DAY() returnerer null :

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

Resultat:

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

Tjek advarslen:

SHOW WARNINGS;

Resultat:

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

Manglende argument

Kalder LAST_DAY() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT LAST_DAY();

Resultat:

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

Og endnu et eksempel:

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

Resultat:

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

  1. Hvordan kopierer jeg SQL Azure-databasen til min lokale udviklingsserver?

  2. Sådan eksporteres forespørgselsresultat til .csv eller tabulatorsepareret fil i SQL Server Management Studio(SSMS) - SQL Server / TSQL Selvstudium Del 23

  3. Pivottabeller i MySQL

  4. Få det aktuelle år, den aktuelle måned og den aktuelle dag i MySQL