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

Sådan fungerer QUARTER() i MariaDB

I MariaDB, QUARTER() er en indbygget dato- og tidsfunktion, der returnerer kvartalet fra et givet datoudtryk.

Den accepterer ét argument, som er den dato, du vil udtrække kvartalet fra.

Det returnerer kvartalet som et tal i området 1 til 4 . For datoer med nul måneder (f.eks. 0000-00-00 eller 2025-00-00 ), er resultatet 0 .

Syntaks

Syntaksen ser sådan ud:

QUARTER(date) 

Hvor date er datoudtrykket at hente kvartalet fra.

Eksempel

Her er et eksempel:

SELECT QUARTER('2030-08-01'); 

Resultat:

+------------------------------+| KVARTAL('2030-08-01') |+----------------------------+| 3 |+------------------------------+

Dato-tidsværdier

Det fungerer også med datetime-værdier:

SELECT QUARTER('2030-08-01 10:30:45'); 

Resultat:

+--------------------------------+| KVARTAL('2030-08-01 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+

Nul måneder

Datoer med nul måneder resulterer i 0 .

Eksempel:

SELECT QUARTER('2030-00-00'); 

Resultat:

+------------------------------+| KVARTAL('2030-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 QUARTER(20301125); 

Resultat:

+------------------------+| KVARTAL(20301125) |+--------------------+| 4 |+--------------------+

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

SELECT QUARTER(301125); 

Resultat:

+----------------+| KVARTAL(301125) |+-----------------+| 4 |+-----------------+

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

SELECT QUARTER(20301135); 

Resultat:

+------------------------+| KVARTAL(20301135) |+------------------------+| NULL |+--------------------+1 række i sæt, 1 advarsel (0,000 sek.)

Vi kan tjekke advarslen sådan her:

SHOW WARNINGS; 

Resultat:

+--------+------+------------------------------------- ----------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- --------+| Advarsel | 1292 | Forkert datetime-værdi:'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 
    QUARTER('2030/06/25'),
    QUARTER('2030,06,25'),
    QUARTER('2030:06:25'),
    QUARTER('2030;06!25'); 

Resultat (ved hjælp af lodret output):

QUARTER('2030/06/25'):2QUARTER('2030;06,25'):2QUARTER('2030:06:25'):2QUARTER('2030;06!25'):2 

Aktuel dato

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

SELECT 
    NOW(),
    QUARTER(NOW()); 

Resultat:

+---------------------+----------------+| NU() | KVARTAL(NU()) |+---------------------+----------------+| 18-05-2021 09:23:27 | 2 |+----------------------------+----------------+

Ugyldige argumenter

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

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

Resultat:

+------------------------------+| KVARTAL('2030-65-78') |+----------------------------+| NULL |+------------------------------+1 række i sæt, 1 advarsel (0,000 sek.)

Tjek advarslen:

SHOW WARNINGS; 

Resultat:

+--------+------+------------------------------------- -----------+| Niveau | Kode | Besked |+--------+------+-------------------------------------- ----------+| Advarsel | 1292 | Forkert datetime-værdi:'2030-65-78' |+---------+------+-------------------- --------------------+

Manglende argument

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

SELECT QUARTER(); 

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 QUARTER('2030-12-10', '2031-12-10'); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks, der skal bruges nær ''2031-12-10')' på linje 1

  1. 6 problemforespørgsler, der gør din database meget langsommere

  2. kunde.pk_name joining transactions.fk_name vs. kunde.pk_id [serial] joining transactions.fk_id [heltal]

  3. Hvor effektiv er din ProxySQL-node?

  4. Tally Tabel for at indsætte manglende datoer mellem to datoer? SQL