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

Cómo funciona DAYOFWEEK() en MariaDB

En MariaDB, DAYOFWEEK() 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 se adhiere al estándar ODBC (1 =domingo, 2 =lunes, etc.). Esto contrasta con WEEKDAY() , donde 0 =lunes, 1 =martes, etc.

Sintaxis

La sintaxis es así:

DAYOFWEEK(date)

Donde date es la fecha desde la que se obtiene el día.

Ejemplo

He aquí un ejemplo:

SELECT DAYOFWEEK('2030-01-25');

Resultado:

+-------------------------+
| DAYOFWEEK('2030-01-25') |
+-------------------------+
|                       6 |
+-------------------------+

Comparado con el nombre del día

Aquí hay otro, junto con DAYNAME() para devolver el nombre del día:

SELECT 
    DAYOFWEEK('2030-01-20'),
    DAYNAME('2030-01-20');

Resultado:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') |
+-------------------------+-----------------------+
|                       1 | Sunday                |
+-------------------------+-----------------------+

Como se mencionó, la numeración del índice comienza en 1 para el domingo.

Aquí está el sábado:

SELECT 
    DAYOFWEEK('2030-01-19'),
    DAYNAME('2030-01-19');

Resultado:

+-------------------------+-----------------------+
| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |
+-------------------------+-----------------------+
|                       7 | Saturday              |
+-------------------------+-----------------------+

Valores de fecha y hora

También funciona con valores de fecha y hora:

SELECT DAYOFWEEK('2030-01-24 10:30:45');

Resultado:

+----------------------------------+
| DAYOFWEEK('2030-01-24 10:30:45') |
+----------------------------------+
|                                5 |
+----------------------------------+

Cero Días

Los días cero dan como resultado null .

Ejemplo:

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

Resultado:

+-------------------------+
| DAYOFWEEK('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 DAYOFWEEK(20300125);

Resultado:

+---------------------+
| DAYOFWEEK(20300125) |
+---------------------+
|                   6 |
+---------------------+

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

SELECT DAYOFWEEK(300125);

Resultado:

+-------------------+
| DAYOFWEEK(300125) |
+-------------------+
|                 6 |
+-------------------+

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 DAYOFWEEK(20300135);

Resultado:

+---------------------+
| DAYOFWEEK(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 
    DAYOFWEEK('2030/01/25'),
    DAYOFWEEK('2030,01,25'),
    DAYOFWEEK('2030:01:25'),
    DAYOFWEEK('2030;01!25');

Resultado (usando salida vertical):

DAYOFWEEK('2030/01/25'): 6
DAYOFWEEK('2030,01,25'): 6
DAYOFWEEK('2030:01:25'): 6
DAYOFWEEK('2030;01!25'): 6

Fecha actual

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

SELECT 
    NOW(),
    DAYOFWEEK(NOW());

Resultado:

+---------------------+------------------+
| NOW()               | DAYOFWEEK(NOW()) |
+---------------------+------------------+
| 2021-05-15 09:17:44 |                7 |
+---------------------+------------------+

Argumentos no válidos

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

SELECT DAYOFWEEK('Homer');

Resultado:

+--------------------+
| DAYOFWEEK('Homer') |
+--------------------+
|               NULL |
+--------------------+

Argumento faltante

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

SELECT DAYOFWEEK();

Resultado:

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

Y otro ejemplo:

SELECT DAYOFWEEK('2030-01-25', '2045-05-08');

Resultado:

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