En MariaDB, WEEKDAY()
es una función de fecha y hora incorporada que devuelve el día de la semana a partir de una fecha determinada.
Acepta un argumento, que es la fecha de la que desea extraer el día de la semana.
Devuelve el día como un número. La numeración del índice comienza en cero para el lunes (es decir, 0
=lunes, 1
=martes, etc.). Esto contrasta con DAYOFWEEK()
, que se adhiere al estándar ODBC (1
=domingo, 2
=lunes, etc.).
Sintaxis
La sintaxis es así:
WEEKDAY(date)
Donde date
es la fecha desde la que se obtiene el día de la semana.
Ejemplo
He aquí un ejemplo:
SELECT WEEKDAY('2030-01-25');
Resultado:
+-----------------------+ | WEEKDAY('2030-01-25') | +-----------------------+ | 4 | +-----------------------+
Comparado con el nombre del día
Aquí hay otro, junto con DAYNAME()
para devolver el nombre del día:
SELECT
WEEKDAY('2030-01-21'),
DAYNAME('2030-01-21');
Resultado:
+-----------------------+-----------------------+ | WEEKDAY('2030-01-21') | DAYNAME('2030-01-21') | +-----------------------+-----------------------+ | 0 | Monday | +-----------------------+-----------------------+
Como se mencionó, la numeración del índice comienza en 0 para el lunes.
Aquí está el domingo:
SELECT
WEEKDAY('2030-01-20'),
DAYNAME('2030-01-20');
Resultado:
+-----------------------+-----------------------+ | WEEKDAY('2030-01-20') | DAYNAME('2030-01-20') | +-----------------------+-----------------------+ | 6 | Sunday | +-----------------------+-----------------------+
Valores de fecha y hora
También funciona con valores de fecha y hora:
SELECT WEEKDAY('2030-01-24 10:30:45');
Resultado:
+--------------------------------+ | WEEKDAY('2030-01-24 10:30:45') | +--------------------------------+ | 3 | +--------------------------------+
Cero Días
Los días cero dan como resultado null
.
Ejemplo:
SELECT WEEKDAY('2030-00-00');
Resultado:
+-----------------------+ | WEEKDAY('2030-00-00') | +-----------------------+ | NULL | +-----------------------+
Fechas numéricas
También es posible pasar fechas como un número, siempre que tenga sentido como fecha.
Ejemplo
SELECT WEEKDAY(20300125);
Resultado:
+-------------------+ | WEEKDAY(20300125) | +-------------------+ | 4 | +-------------------+
O incluso lo siguiente (que usa un año de dos dígitos):
SELECT WEEKDAY(300125);
Resultado:
+-----------------+ | WEEKDAY(300125) | +-----------------+ | 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 WEEKDAY(20300135);
Resultado:
+-------------------+ | WEEKDAY(20300135) | +-------------------+ | NULL | +-------------------+
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
WEEKDAY('2030/01/25'),
WEEKDAY('2030,01,25'),
WEEKDAY('2030:01:25'),
WEEKDAY('2030;01!25');
Resultado (usando salida vertical):
WEEKDAY('2030/01/25'): 4 WEEKDAY('2030,01,25'): 4 WEEKDAY('2030:01:25'): 4 WEEKDAY('2030;01!25'): 4
Fecha actual
Podemos pasar NOW()
como argumento de fecha para usar la fecha actual:
SELECT
NOW(),
WEEKDAY(NOW());
Resultado:
+---------------------+----------------+ | NOW() | WEEKDAY(NOW()) | +---------------------+----------------+ | 2021-05-15 09:44:50 | 5 | +---------------------+----------------+
Argumentos no válidos
Cuando se pasa un argumento no válido, WEEKDAY()
devuelve null
:
SELECT WEEKDAY('Homer');
Resultado:
+------------------+ | WEEKDAY('Homer') | +------------------+ | NULL | +------------------+
Argumento faltante
Llamando a WEEKDAY()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT WEEKDAY();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKDAY'
Y otro ejemplo:
SELECT WEEKDAY('2030-01-25', '2045-05-08');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKDAY'