In MariaDB, QUARTER()
is een ingebouwde datum- en tijdfunctie die het kwartaal van een bepaalde datumuitdrukking retourneert.
Het accepteert één argument, namelijk de datum waarvan u het kwartaal wilt extraheren.
Het geeft het kwartaal terug als een getal in het bereik 1
tot 4
. Voor datums met nul maanden (bijv. 0000-00-00
of 2025-00-00
), het resultaat is 0
.
Syntaxis
De syntaxis gaat als volgt:
QUARTER(date)
Waar date
is de datumuitdrukking om het kwartaal uit te halen.
Voorbeeld
Hier is een voorbeeld:
SELECT QUARTER('2030-08-01');
Resultaat:
+-----------------------+ | QUARTER('2030-08-01') | +-----------------------+ | 3 | +-----------------------+
Datum/tijd-waarden
Het werkt ook met datetime-waarden:
SELECT QUARTER('2030-08-01 10:30:45');
Resultaat:
+--------------------------------+ | QUARTER('2030-08-01 10:30:45') | +--------------------------------+ | 3 | +--------------------------------+
Nul maanden
Datums met nul maanden resulteren in 0
.
Voorbeeld:
SELECT QUARTER('2030-00-00');
Resultaat:
+-----------------------+ | QUARTER('2030-00-00') | +-----------------------+ | 0 | +-----------------------+
Numerieke datums
Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.
Voorbeeld
SELECT QUARTER(20301125);
Resultaat:
+-------------------+ | QUARTER(20301125) | +-------------------+ | 4 | +-------------------+
Of zelfs het volgende (met een jaartal van twee cijfers):
SELECT QUARTER(301125);
Resultaat:
+-----------------+ | QUARTER(301125) | +-----------------+ | 4 | +-----------------+
Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:
SELECT QUARTER(20301135);
Resultaat:
+-------------------+ | QUARTER(20301135) | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
We kunnen de waarschuwing als volgt controleren:
SHOW WARNINGS;
Resultaat:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Andere scheidingstekens
U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:
SELECT
QUARTER('2030/06/25'),
QUARTER('2030,06,25'),
QUARTER('2030:06:25'),
QUARTER('2030;06!25');
Resultaat (met verticale uitvoer):
QUARTER('2030/06/25'): 2 QUARTER('2030,06,25'): 2 QUARTER('2030:06:25'): 2 QUARTER('2030;06!25'): 2
Huidige datum
We kunnen NOW()
doorgeven als het datetime-argument om de huidige datum te gebruiken:
SELECT
NOW(),
QUARTER(NOW());
Resultaat:
+---------------------+----------------+ | NOW() | QUARTER(NOW()) | +---------------------+----------------+ | 2021-05-18 09:23:27 | 2 | +---------------------+----------------+
Ongeldige argumenten
Wanneer een ongeldig argument wordt doorgegeven, QUARTER()
retourneert null
:
SELECT QUARTER('2030-65-78');
Resultaat:
+-----------------------+ | QUARTER('2030-65-78') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
Controleer de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Ontbrekend argument
Aanroepen van QUARTER()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT QUARTER();
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
En nog een voorbeeld:
SELECT QUARTER('2030-12-10', '2031-12-10');
Resultaat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2031-12-10')' at line 1