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

Cómo obtener el nombre de día corto de una fecha en MariaDB

En MariaDB, puede usar el DATE_FORMAT() función para devolver varias partes de fecha de una fecha. Una de las cosas que puede devolver es el nombre corto del día. Por ejemplo, Tue o Wed (en lugar de Tue o Wed ).

El especificador de formato "Nombre de día corto" (%a )

La clave para devolver el nombre corto del día cuando se usa DATE_FORMAT() función es usar el especificador de formato aplicable.

En MariaDB, el especificador de formato para el nombre corto del día es:%a

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT DATE_FORMAT('2023-07-25', '%a');

Resultado:

+---------------------------------+
| DATE_FORMAT('2023-07-25', '%a') |
+---------------------------------+
| Tue                             |
+---------------------------------+

Aquí hay otro ejemplo que se ejecuta a través de varios días de la semana:

SELECT 
    DATE_FORMAT('2023-07-24', '%a') AS "1",
    DATE_FORMAT('2023-07-25', '%a') AS "2",
    DATE_FORMAT('2023-07-26', '%a') AS "3",
    DATE_FORMAT('2023-07-27', '%a') AS "4",
    DATE_FORMAT('2023-07-28', '%a') AS "5",
    DATE_FORMAT('2023-07-29', '%a') AS "6",
    DATE_FORMAT('2023-07-30', '%a') AS "7";

Resultado:

+------+------+------+------+------+------+------+
| 1    | 2    | 3    | 4    | 5    | 6    | 7    |
+------+------+------+------+------+------+------+
| Mon  | Tue  | Wed  | Thu  | Fri  | Sat  | Sun  |
+------+------+------+------+------+------+------+

También puede devolver otras unidades de fecha y hora, pero este artículo trata específicamente de devolver el nombre corto del día. Consulte Cadenas de formato de MariaDB para obtener una lista de especificadores de formato que se pueden usar con DATE_FORMAT() .

Otros enfoques

Hay otras formas de obtener el nombre corto del día de una fecha que implican cortar la primera parte del día.

Sin embargo, esto puede ser más propenso a errores que el método anterior (además, es más complicado). Podría obtener algunos resultados inesperados al usar este método, especialmente cuando trabaja con diferentes idiomas.

Aquí hay algunos ejemplos para demostrar lo que quiero decir.

En lugar de usar el %a especificador de formato como hicimos en el ejemplo anterior, podríamos usar el %W especificador de formato para devolver el nombre completo del día, luego devolver acortar ese resultado con una función como LEFT() .

Ejemplo:

SELECT 
    DATE_FORMAT('2023-07-25', '%W') AS Full,
    LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;

Resultado:

+---------+-------+
| Full    | Short |
+---------+-------+
| Tuesday | Tue   |
+---------+-------+

Alternativamente, podríamos usar una función como CAST() para convertir a un tipo de datos con solo tres caracteres, como este:

SELECT 
    DATE_FORMAT('2023-07-25', '%W') AS Full,
    CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;

Resultado:

+---------+-------+
| Full    | Short |
+---------+-------+
| Tuesday | Tue   |
+---------+-------+

Esto funciona bien cuando se trabaja con el idioma inglés (y quizás con otros idiomas). Pero veamos qué sucede cuando cambiamos a un idioma diferente, por ejemplo, japonés:

SELECT 
    DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
    LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;

Resultado:

+-----------+-----------+
| Full      | Short     |
+-----------+-----------+
| 火曜日     | 火曜日     |
+-----------+-----------+

En este caso, no hay diferencia.

En contraste, esto es lo que sucede cuando usamos el %a especificador de formato para devolver el nombre corto del día:

SELECT 
    DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
    DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;

Resultado:

+-----------+-------+
| Full      | Short |
+-----------+-------+
| 火曜日     | 火    |
+-----------+-------+

Así que recomendaría usar el %a especificador de formato siempre que sea posible.