sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona QUARTER() en MariaDB

En MariaDB, QUARTER() es una función de fecha y hora integrada que devuelve el trimestre de una expresión de fecha dada.

Acepta un argumento, que es la fecha de la que desea extraer el trimestre.

Devuelve el trimestre como un número en el rango 1 a 4 . Para fechas con cero meses (por ejemplo, 0000-00-00 o 2025-00-00 ), el resultado es 0 .

Sintaxis

La sintaxis es así:

QUARTER(date)

Donde date es la expresión de fecha de donde se obtiene el trimestre.

Ejemplo

He aquí un ejemplo:

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

Resultado:

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

Valores de fecha y hora

También funciona con valores de fecha y hora:

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

Resultado:

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

Cero Meses

Las fechas con cero meses dan como resultado 0 .

Ejemplo:

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

Resultado:

+-----------------------+
| QUARTER('2030-00-00') |
+-----------------------+
|                     0 |
+-----------------------+

Fechas numéricas

También es posible pasar fechas como un número, siempre que tenga sentido como fecha.

Ejemplo

SELECT QUARTER(20301125);

Resultado:

+-------------------+
| QUARTER(20301125) |
+-------------------+
|                 4 |
+-------------------+

O incluso lo siguiente (que usa un año de dos dígitos):

SELECT QUARTER(301125);

Resultado:

+-----------------+
| QUARTER(301125) |
+-----------------+
|               4 |
+-----------------+

Pero debe tener sentido como fecha. Esto es lo que sucede si aumento la parte del día a un día no válido:

SELECT QUARTER(20301135);

Resultado:

+-------------------+
| QUARTER(20301135) |
+-------------------+
|              NULL |
+-------------------+
1 row in set, 1 warning (0.000 sec)

Podemos comprobar la advertencia de esta manera:

SHOW WARNINGS;

Resultado:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

Otros delimitadores

Puede utilizar otros delimitadores para la fecha. MariaDB es bastante indulgente cuando se trata de delimitadores en fechas. Aquí hay algunos ejemplos válidos:

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

Resultado (usando salida vertical):

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

Fecha actual

Podemos pasar NOW() como argumento de fecha y hora para usar la fecha actual:

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

Resultado:

+---------------------+----------------+
| NOW()               | QUARTER(NOW()) |
+---------------------+----------------+
| 2021-05-18 09:23:27 |              2 |
+---------------------+----------------+

Argumentos no válidos

Cuando se pasa un argumento no válido, QUARTER() devuelve null :

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

Resultado:

+-----------------------+
| QUARTER('2030-65-78') |
+-----------------------+
|                  NULL |
+-----------------------+
1 row in set, 1 warning (0.000 sec)

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Argumento faltante

Llamando a QUARTER() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT QUARTER();

Resultado:

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

Y otro ejemplo:

SELECT QUARTER('2030-12-10', '2031-12-10');

Resultado:

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