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

Cómo funciona WEEKOFYEAR() en MariaDB

En MariaDB, WEEKOFYEAR() es una función de fecha y hora integrada que devuelve la semana del calendario de una fecha dada como un número en el rango de 1 a 53 .

Es el equivalente a usar WEEK() funciona en el modo 3 y, por lo tanto, su resultado está de acuerdo con la norma ISO 8601:1988.

Acepta un argumento; la fecha de la que desea extraer la semana.

Sintaxis

La sintaxis es así:

WEEKOFYEAR(date)

Donde date es la expresión de fecha de la que se obtiene la semana del calendario.

Ejemplo

He aquí un ejemplo:

SELECT WEEKOFYEAR('2030-01-01');

Resultado:

+--------------------------+
| WEEKOFYEAR('2030-01-01') |
+--------------------------+
|                        1 |
+--------------------------+

Es el equivalente a hacer lo siguiente:

SELECT WEEK('2030-01-01', 3);

Resultado:

+-----------------------+
| WEEK('2030-01-01', 3) |
+-----------------------+
|                     1 |
+-----------------------+

Valores de fecha y hora

El WEEKOFYEAR() la función también funciona con valores de fecha y hora:

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

Resultado:

+-----------------------------------+
| WEEKOFYEAR('2030-08-01 10:30:45') |
+-----------------------------------+
|                                31 |
+-----------------------------------+

Fechas numéricas

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

Ejemplo

SELECT WEEKOFYEAR(20301125);

Resultado:

+----------------------+
| WEEKOFYEAR(20301125) |
+----------------------+
|                   48 |
+----------------------+

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

SELECT WEEKOFYEAR(301125);

Resultado:

+--------------------+
| WEEKOFYEAR(301125) |
+--------------------+
|                 48 |
+--------------------+

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 WEEKOFYEAR(20301135);

Resultado:

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

Devolvió null con una advertencia

Veamos la advertencia:

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 
    WEEKOFYEAR('2030/06/25'),
    WEEKOFYEAR('2030,06,25'),
    WEEKOFYEAR('2030:06:25'),
    WEEKOFYEAR('2030;06!25');

Resultado (usando salida vertical):

WEEKOFYEAR('2030/06/25'): 26
WEEKOFYEAR('2030,06,25'): 26
WEEKOFYEAR('2030:06:25'): 26
WEEKOFYEAR('2030;06!25'): 26

Fecha actual

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

SELECT 
    NOW(),
    WEEKOFYEAR(NOW());

Resultado:

+---------------------+-------------------+
| NOW()               | WEEKOFYEAR(NOW()) |
+---------------------+-------------------+
| 2021-05-17 09:42:13 |                20 |
+---------------------+-------------------+

Argumentos no válidos

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

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

Resultado:

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

Mostremos la advertencia:

SHOW WARNINGS;

Resultado:

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

Argumento faltante

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

SELECT WEEKOFYEAR();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'

Y otro ejemplo:

SELECT WEEKOFYEAR('2030-12-10', 1);

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'