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

Cómo funciona DAYNAME() en MariaDB

En MariaDB, DAYNAME() es una función de fecha y hora incorporada que devuelve el nombre del día de la semana para una fecha determinada.

Acepta un argumento, que es la fecha de la que desea extraer el nombre del día.

Sintaxis

La sintaxis es así:

DAYNAME(date)

Donde date es la fecha de donde se obtiene el nombre del día.

Ejemplo

He aquí un ejemplo:

SELECT DAYNAME('2045-10-17');

Resultado:

+-----------------------+
| DAYNAME('2045-10-17') |
+-----------------------+
| Tuesday               |
+-----------------------+

Idioma

El idioma utilizado para el nombre del día está controlado por el valor de lc_time_names variable del sistema.

Aquí hay un ejemplo que muestra cómo esto afecta el resultado:

SET lc_time_names = 'de_DE';
SELECT DAYNAME('2045-10-17');

Resultado:

+-----------------------+
| DAYNAME('2045-10-17') |
+-----------------------+
| Dienstag              |
+-----------------------+

Y volviendo a en_US , que es el predeterminado:

SET lc_time_names = 'en_US';
SELECT DAYNAME('2045-10-17');

Resultado:

+-----------------------+
| DAYNAME('2045-10-17') |
+-----------------------+
| Tuesday               |
+-----------------------+

Aquí hay una lista de configuraciones regionales admitidas por MariaDB, y aquí se explica cómo devolver su propia lista de configuraciones regionales disponibles.

Mientras estamos en eso, aquí hay una publicación que explica cómo verificar el valor de sus lc_time_names variable del sistema.

Valores de fecha y hora

También funciona con valores de fecha y hora:

SELECT DAYNAME('2030-01-25 10:30:45');

Resultado:

+--------------------------------+
| DAYNAME('2030-01-25 10:30:45') |
+--------------------------------+
| Friday                         |
+--------------------------------+

Cero Días

Tener un día cero en la fecha devuelve null :

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

Resultado:

+-----------------------+
| DAYNAME('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 DAYNAME(20201108);

Resultado:

+-------------------+
| DAYNAME(20201108) |
+-------------------+
| Sunday            |
+-------------------+

Los años de dos dígitos están bien:

SELECT DAYNAME(201108);

Resultado:

+-----------------+
| DAYNAME(201108) |
+-----------------+
| Sunday          |
+-----------------+

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

SELECT DAYNAME(209908);

Resultado:

+-----------------+
| DAYNAME(209908) |
+-----------------+
| 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 
    DAYNAME('2027/08/19'),
    DAYNAME('2027,08,19'),
    DAYNAME('2027:08:19'),
    DAYNAME('2027;08!19');

Resultado (usando salida vertical):

DAYNAME('2027/08/19'): Thursday
DAYNAME('2027,08,19'): Thursday
DAYNAME('2027:08:19'): Thursday
DAYNAME('2027;08!19'): Thursday

Fecha actual

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

SELECT 
    NOW(),
    DAYNAME(NOW());

Resultado:

+---------------------+----------------+
| NOW()               | DAYNAME(NOW()) |
+---------------------+----------------+
| 2021-05-13 13:29:10 | Thursday       |
+---------------------+----------------+

Argumentos no válidos

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

SELECT DAYNAME('Dang!');

Resultado:

+------------------+
| DAYNAME('Dang!') |
+------------------+
| NULL             |
+------------------+

Argumento faltante

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

SELECT DAYNAME();

Resultado:

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

Y otro ejemplo:

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

Resultado:

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