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

Come funziona QUARTER() in MariaDB

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