sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB DAY() Förklarad

I MariaDB, DAY() är en synonym för DAYOFMONTH() . Den returnerar dagen i månaden från ett givet datum.

Den accepterar ett argument, vilket är det datum du vill returnera månadsdagen från.

Resultatet ligger i intervallet 1 till 31 . Men om datumet har en nolldag del (till exempel '0000-00-00' eller '2021-00-00' ), blir resultatet 0 .

Syntax

Syntaxen ser ut så här:

DAY(date) 

Där date är datumet att extrahera dagen från.

Exempel

Här är ett exempel:

SELECT DAY('2045-05-18'); 

Resultat:

+------------------------+| DAG('2045-05-18') |+--------------------+| 18 |+--------------------+

Datetime-värden

Det fungerar också med datetime-värden:

SELECT DAY('2045-05-18 01:10:15'); 

Resultat:

+------------------------------------+| DAY('2045-05-18 01:10:15') |+----------------------------------+| 18 |+------------------------------------+

Noll dagar

Här är ett exempel som använder en nolldag i datumet:

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

Resultat:

+------------------------+| DAG('0000-00-00') |+--------------------+| 0 |+--------------------+

Numeriska datum

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

Exempel

SELECT DAY(20220308); 

Resultat:

+---------------+| DAG(20220308) |+--------------+| 8 |+---------------------+

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

SELECT DAY(220308); 

Resultat:

+-------------+| DAG(220308) |+-------------+| 8 |+-------------+

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

SELECT DAY(220358); 

Resultat:

+-------------+| DAG(220358) |+-------------+| NULL |+-------------+

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 
    DAY('2028/12/30'),
    DAY('2028,12,30'),
    DAY('2028:12:30'),
    DAY('2028;12!30'); 

Resultat (med vertikal utdata):

DAY('2028/12/30'):30DAY('2028,12,30'):30DAY('2028:12:30'):30DAY('2028;12!30'):30 

Aktuellt datum

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

SELECT 
    NOW(),
    DAY(NOW()); 

Resultat:

+----------------------------+--------+| NU() | DAG(NU()) |+----------------------------+-----------+| 2021-05-13 09:41:03 | 13 |+---------------------+------------+

Ogiltiga argument

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

SELECT DAY('Oops!'); 

Resultat:

+--------------+| DAY('Hoppsan!') |+---------------+| NULL |+--------------+

Argument saknas

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

SELECT DAY(); 

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ')' på rad 1

Och ett annat exempel:

SELECT DAY('2030-01-25', '2045-05-08'); 

Resultat:

ERROR 1064 (42000):Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MariaDB-serverversion för rätt syntax att använda nära ''2045-05-08')' på rad 1

  1. Konstruera datum från år och veckonummer i MSSQL

  2. Anropar en Oracle-procedur med en PL/SQL-insamlingstypparameter via .NET

  3. Returnera postuppsättning (virtuell tabell) från funktion

  4. Skapa en PostgreSQL-användare och lägga till dem i en databas