In MariaDB, QUARTER()
è una funzione di data e ora incorporata che restituisce il trimestre da una determinata espressione di data.
Accetta un argomento, che è la data da cui vuoi estrarre il trimestre.
Restituisce il trimestre come numero nell'intervallo 1
a 4
. Per date con zero mesi (ad es. 0000-00-00
o 2025-00-00
), il risultato è 0
.
Sintassi
La sintassi è questa:
QUARTER(date)
Dove date
è l'espressione della data da cui ottenere il trimestre.
Esempio
Ecco un esempio:
SELECT QUARTER('2030-08-01');
Risultato:
+-----------------------+ | QUARTER('2030-08-01') | +-----------------------+ | 3 | +-----------------------+
Valori di data e ora
Funziona anche con i valori datetime:
SELECT QUARTER('2030-08-01 10:30:45');
Risultato:
+--------------------------------+ | QUARTER('2030-08-01 10:30:45') | +--------------------------------+ | 3 | +--------------------------------+
Zero mesi
Le date con zero mesi risultano in 0
.
Esempio:
SELECT QUARTER('2030-00-00');
Risultato:
+-----------------------+ | QUARTER('2030-00-00') | +-----------------------+ | 0 | +-----------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT QUARTER(20301125);
Risultato:
+-------------------+ | QUARTER(20301125) | +-------------------+ | 4 | +-------------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT QUARTER(301125);
Risultato:
+-----------------+ | QUARTER(301125) | +-----------------+ | 4 | +-----------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT QUARTER(20301135);
Risultato:
+-------------------+ | QUARTER(20301135) | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
Possiamo controllare l'avviso in questo modo:
SHOW WARNINGS;
Risultato:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
Altri delimitatori
È possibile utilizzare altri delimitatori per la data. MariaDB è abbastanza clemente quando si tratta di delimitatori sulle date. Ecco alcuni validi esempi:
SELECT
QUARTER('2030/06/25'),
QUARTER('2030,06,25'),
QUARTER('2030:06:25'),
QUARTER('2030;06!25');
Risultato (usando l'output verticale):
QUARTER('2030/06/25'): 2 QUARTER('2030,06,25'): 2 QUARTER('2030:06:25'): 2 QUARTER('2030;06!25'): 2
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare la data corrente:
SELECT
NOW(),
QUARTER(NOW());
Risultato:
+---------------------+----------------+ | NOW() | QUARTER(NOW()) | +---------------------+----------------+ | 2021-05-18 09:23:27 | 2 | +---------------------+----------------+
Argomenti non validi
Quando viene passato un argomento non valido, QUARTER()
restituisce null
:
SELECT QUARTER('2030-65-78');
Risultato:
+-----------------------+ | QUARTER('2030-65-78') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
Controlla l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Argomento mancante
Chiamando QUARTER()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT QUARTER();
Risultato:
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
E un altro esempio:
SELECT QUARTER('2030-12-10', '2031-12-10');
Risultato:
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