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

MariaDB DAG() Forklaret

I MariaDB, DAY() er et synonym for DAYOFMONTH() . Det returnerer dagen i måneden fra en given dato.

Den accepterer ét argument, som er den dato, du ønsker at returnere dagen i måneden fra.

Resultatet er i området 1 til 31 . Men hvis datoen har en dag på nul (for eksempel '0000-00-00' eller '2021-00-00' ), er resultatet 0 .

Syntaks

Syntaksen ser sådan ud:

DAY(date) 

Hvor date er den dato, dagen skal udtrækkes fra.

Eksempel

Her er et eksempel:

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

Resultat:

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

Dato-tidsværdier

Det fungerer også med datetime-værdier:

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

Resultat:

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

Nul dage

Her er et eksempel, der bruger en dag på nul i datoen:

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

Resultat:

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

Numeriske datoer

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

Eksempel

SELECT DAY(20220308); 

Resultat:

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

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

SELECT DAY(220308); 

Resultat:

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

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

SELECT DAY(220358); 

Resultat:

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

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

Resultat (ved hjælp af lodret output):

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

Aktuel dato

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

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

Resultat:

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

Ugyldige argumenter

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

SELECT DAY('Oops!'); 

Resultat:

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

Manglende argument

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

SELECT DAY(); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

Og endnu et eksempel:

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

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug nær ''2045-05-08')' på linje 1

  1. MySQL-forespørgsel - Registrerer mellem i dag og sidste 30 dage

  2. Den hurtigste måde at kontrollere, om nogle poster i en databasetabel?

  3. Dvale native forespørgsel - char(3) kolonne

  4. Hvordan får man en alder fra et D.O.B-felt i MySQL?