MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como obter o nome do dia curto de uma data no MariaDB


No MariaDB, você pode usar o DATE_FORMAT() função para retornar várias partes de uma data. Uma das coisas que você pode retornar é o nome do dia curto. Por exemplo Tue ou Wed (em vez de Tuesday ou Wednesday ).

O especificador de formato "Nome de dia curto" (%a )


A chave para retornar o nome curto do dia ao usar o DATE_FORMAT() função é usar o especificador de formato aplicável.

No MariaDB, o especificador de formato para o nome curto do dia é:%a

Exemplo


Segue um exemplo para demonstrar:
SELECT DATE_FORMAT('2023-07-25', '%a');

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

Aqui está outro exemplo que percorre os vários dias da 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  |
+------+------+------+------+------+------+------+

Você também pode retornar outras unidades de data e hora, mas este artigo é especificamente sobre como retornar o nome curto do dia. Veja MariaDB Format Strings para uma lista de especificadores de formato que podem ser usados ​​com DATE_FORMAT() .

Outras abordagens


Existem outras maneiras de obter o nome curto do dia de uma data que envolve cortar a primeira parte do dia.

No entanto, isso pode ser mais propenso a erros do que o método acima (além de ser mais complicado). Você pode obter alguns resultados inesperados ao usar esse método, especialmente ao trabalhar com idiomas diferentes.

Aqui estão alguns exemplos para demonstrar o que quero dizer.

Em vez de usar o %a especificador de formato como fizemos no exemplo anterior, poderíamos usar o %W especificador de formato para retornar o nome completo do dia e, em seguida, retornar abreviar esse resultado com uma função como LEFT() .

Exemplo:
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, poderíamos usar uma função como CAST() para converter para um tipo de dados com apenas três 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   |
+---------+-------+

Isso funciona bem ao trabalhar com o idioma inglês (e talvez alguns outros idiomas). Mas vamos ver o que acontece quando mudamos para um idioma diferente – digamos, 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     |
+-----------+-----------+
| 火曜日     | 火曜日     |
+-----------+-----------+

Neste caso, não há diferença.

Em contraste, aqui está o que acontece quando usamos o %a especificador de formato para retornar o nome curto do dia:
SELECT 
    DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
    DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;

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

Portanto, recomendo usar o %a especificador de formato sempre que possível.