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'