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.