sql >> Databasteknik >  >> RDS >> MariaDB

Hur LAST_DAY() fungerar i MariaDB

I MariaDB, LAST_DAY() är en inbyggd datum- och tidsfunktion som returnerar den sista dagen i månaden för ett givet datum.

Den accepterar ett argument, vilket är det datum för vilket du vill hitta den sista dagen i månaden.

Syntax

Syntaxen ser ut så här:

LAST_DAY(date)

Där date är det datumuttryck som du vill hitta den sista dagen i månaden.

Exempel

Här är ett exempel:

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

Resultat:

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

I det här fallet använder vi ett datum i februari. Som det visar sig har februari 28 dagar det året.

Så här händer om vi ökar datumet till nästa skottår:

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

Resultat:

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

Datetime-värden

Det fungerar också med datetime-värden:

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

Resultat:

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

Noll datum

Noll datum resulterar i null .

Exempel:

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

Resultat:

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

Numeriska datum

Det är också möjligt att skicka datum som ett nummer, så länge det är vettigt som ett datum.

Exempel

SELECT LAST_DAY(20301125);

Resultat:

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

Eller till och med följande (som använder ett tvåsiffrigt år):

SELECT LAST_DAY(301125);

Resultat:

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

Men det måste vara vettigt som en dejt. Så här händer om jag ökar dagdelen till en ogiltig dag:

SELECT LAST_DAY(20301135);

Resultat:

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

Vi kan kontrollera varningen så här:

SHOW WARNINGS;

Resultat:

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

Andra avgränsare

Du kan använda andra avgränsare för datumet. MariaDB är ganska förlåtande när det kommer till avgränsare på datum. Här är några giltiga exempel:

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

Resultat (med vertikal utdata):

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

Aktuellt datum

Vi kan skicka NOW() som datetime-argument för att använda det aktuella datumet:

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

Resultat:

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

Ogiltiga argument

När ett ogiltigt argument skickades, LAST_DAY() returnerar null :

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

Resultat:

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

Kontrollera varningen:

SHOW WARNINGS;

Resultat:

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

Argument saknas

Ringer LAST_DAY() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT LAST_DAY();

Resultat:

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

Och ett annat exempel:

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. Hur man väljer datum utan tid i SQL

  2. Hur man ställer in MariaDB 10.3-replikering med Ansible och Vagrant

  3. Hur ställer man in ORACLE_HOME-variabeln korrekt på Ubuntu 9.x?

  4. Webrick är väldigt långsam med att svara. Hur snabbar man upp det?