O idioma da exibição dos nomes completos dos meses, dos dias da semana ou suas abreviações, no MySQL, são controlados pela variável lc_time_names. Esta variável afeta a saída das funções DATE_FORMAT(), DAYNAME() e MONTHNAME().
A variável
lc_time_names
não afeta o funcionamento das funções STR_TO_DATE() ou GET_FORMAT(), no MySQL
Os nomes dos locales, definidos na variável de ambiente de sistema lc_time_names
devem conter o idioma e a região geográfica, de acordo com a lista do IANA.
O valor padrão desta variável é ‘en_US’, ou seja, english_United States (inglês dos Estados Unidos). Você está aqui, provavelmente por que deseja alterar este valor para português do Brasil ou de Portugal — cada um dos dois tem um valor específico correspondente:
pt_PT
— português de Portugal ou português europeuPt_BR
— português do Brasil
Você pode ver o valor atual da variável com o uso do comando SELECT, do MySQL:
SELECT @@lc_time_names; _
+-----------------+ | @@lc_time_names | +-----------------+ | pt_BR | +-----------------+ 1 row in set (0.00 sec)
… e use o comando SET para alterar a variável:
SET lc_time_names = 'pt_BR'; _
Agora, faça o teste:
SELECT DATE_FORMAT('2020-08-06', '%d de %M de %Y'); _
+---------------------------------------------+ | DATE_FORMAT('2020-08-06', '%d de %M de %Y') | +---------------------------------------------+ | 06 de agosto de 2020 | +---------------------------------------------+ 1 row in set (0.00 sec)
O problema desta abordagem é que ela se perde ao fechar esta sessão do MySQL.
Para tornar a configuração permanente, use GLOBAL, deste jeito:
SET GLOBAL lc_time_names=pt_BR; _
É preciso ter privilégios administrativos, no servidor MySQL, para poder usar SET GLOBAL.
Referências: http://dev.mysql.com/doc/refman/5.7/en/locale-support.html.
4 replies on “Como configurar o MySQL para exibir datas em português”
Digitando:
SET lc_time_names=pt_BR;
SELECT
DATE_FORMAT(DATA, “%b”) AS mes,
SUM(quantidade * valor) AS total
FROM tb_fornecedor
WHERE EXTRACT(YEAR FROM DATA) = 2013
GROUP BY mes
ORDER BY DATE_FORMAT(DATA, ‘%m/%Y’);
No MySQL tem resultado:
| mes | total |
| Set | 585 |
| Out | 2700 |
| Nov | 3320 |
Como passar essa formatação para:
strSql = “SELECT data, extract(month from data) AS mes, extract(year from data) AS ano FROM tb_fornecedor”
set rssomapormesano=Server.CreateObject(“ADODB.RecordSet”)
rssomapormesano.Open strSql, cn
Se colocar o
SET lc_time_names=pt_BR mostra erro.
Obs; Ainda não está no site.
Muito bom,
ajudou bastante.
Muito obrigado! Me esclareceu bastante.
Muito obrigado por compartilhar! Agradeço imensamente!! 🙂