Jump to content
Fórum Script Brasil
  • 0

Mês Do Mysql Em Português-br


diogoleter

Question

Olá,

Hoje me deparei com um tipo de problema que pode ou não ter uma solução simples. Tenho um SELECT deste tipo:

SELECT titulo, conteudo, DATE_FORMAT(modificado, 'Modificado em %d de %M de %Y') FROM noticias WHERE cod=20
Até ai tudo bem, mas um exemplo de resultado seria:
Modificado em 12 de September de 2007

Alguém saberia algum meio, se é que existe, do MySQL retornar no nome do Mês em PT-BR?

OBrigado!

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

ôooo... essa eu não tive tempo de descobrir até hoje e por isso uso isso aí, que "quebra o galho" há um bom tempo:

select personagem,
       concat("nascido a ",
              day(nasc),
              " de ",
              if(Month(nasc)=1,"janeiro",
              if(Month(nasc)=2,"fevereiro",
              if(Month(nasc)=3,"março",
              if(Month(nasc)=4,"abril",
              if(Month(nasc)=5,"maio",
              if(Month(nasc)=6,"junho",
              if(Month(nasc)=7,"julho",
              if(Month(nasc)=8,"agosto",
              if(Month(nasc)=9,"setembro",
              if(Month(nasc)=10,"outubro",
              if(Month(nasc)=11,"novembro","dezembro"))))))))))),
              " de ",
              Year(nasc)) criadoem
from `acme`.`personagens`
where nasc between "1951/01/01" and "1959/12/31";

personagem, criadoem

pernalonga, nascido a 26 de janeiro de 1955

papaleguas, nascido a 14 de outubro de 1958

coiote, nascido a 14 de outubro de 1958

Só não sei se funciona em todas as versões... mas pelo menos nos my4 e my5, com certeza!

Ok?

Link to comment
Share on other sites

  • 0
Guest Denis Courcy

Uma outra forma de voce vazer isso, se voce usa a versão 5 ou superior, é criar uma função que ficará em seu banco de dados e poderá ser utilizada sempre que voce precisar.

Vamos lá. Para este exemplo eu utilizei o código fornecido pelo paulobergo e arrumado para trabalhar em uma função. Criando a função:

DELIMITER $$;

DROP FUNCTION IF EXISTS `novosase`.`DATA_EXTENSO`$$

CREATE FUNCTION `novosase`.`DATA_EXTENSO` (mData Date) RETURNS char(80) CHARSET latin1

BEGIN

declare mes char(15);

Set Mes = "";

if Month(mData) = 1 then

set mes = "Janeiro";

elseif Month(mData) = 2 then

set mes = "Fevereiro";

elseif Month(mData) = 3 then

set mes = "Março";

elseif Month(mData) = 4 then

set mes = "Abril";

elseif Month(mData) = 5 then

set mes = "Maio";

elseif Month(mData) = 6 then

set mes = "Junho";

elseif Month(mData) = 7 then

set mes = "Julho";

elseif Month(mData) = 8 then

set mes = "Agosto";

elseif Month(mData) = 9 then

set mes = "Setembro";

elseif Month(mData) = 10 then

set mes = "Outubro";

elseif Month(mData) = 11 then

set mes = "Novembro";

elseif Month(mData) = 12 then

set mes = "Dezembro";

end if;

return Concat(day(mdata), " de ", mes, " de ", Year(mData));

END$$

DELIMITER ;$$

Testando a execução:

Select concat("Eu Nasci em: ", DATA_EXTENSO(nasc)) where personagem = "pernalonga"

O resultado seria

Eu Nasci em: 26 de janeiro de 1955

att

Denis Courcy

Link to comment
Share on other sites

  • 0
Guest Denis Courcy

Esqueci de informar, onde está `novosase` entenda-se `MEU_BANCO`

Uma outra forma de voce vazer isso, se voce usa a versão 5 ou superior, é criar uma função que ficará em seu banco de dados e poderá ser utilizada sempre que voce precisar.

Vamos lá. Para este exemplo eu utilizei o código fornecido pelo paulobergo e arrumado para trabalhar em uma função. Criando a função:

DELIMITER $$;

DROP FUNCTION IF EXISTS `novosase`.`DATA_EXTENSO`$$

CREATE FUNCTION `novosase`.`DATA_EXTENSO` (mData Date) RETURNS char(80) CHARSET latin1

BEGIN

declare mes char(15);

Set Mes = "";

if Month(mData) = 1 then

set mes = "Janeiro";

elseif Month(mData) = 2 then

set mes = "Fevereiro";

elseif Month(mData) = 3 then

set mes = "Março";

elseif Month(mData) = 4 then

set mes = "Abril";

elseif Month(mData) = 5 then

set mes = "Maio";

elseif Month(mData) = 6 then

set mes = "Junho";

elseif Month(mData) = 7 then

set mes = "Julho";

elseif Month(mData) = 8 then

set mes = "Agosto";

elseif Month(mData) = 9 then

set mes = "Setembro";

elseif Month(mData) = 10 then

set mes = "Outubro";

elseif Month(mData) = 11 then

set mes = "Novembro";

elseif Month(mData) = 12 then

set mes = "Dezembro";

end if;

return Concat(day(mdata), " de ", mes, " de ", Year(mData));

END$$

DELIMITER ;$$

Testando a execução:

Select concat("Eu Nasci em: ", DATA_EXTENSO(nasc)) where personagem = "pernalonga"

O resultado seria

Eu Nasci em: 26 de janeiro de 1955

att

Denis Courcy

Link to comment
Share on other sites

  • 0

Ótimo exemplo...

Mas... como criar essa função, digamos, "global"...

Criei uma função genérica, para converter o mês "inteiro" para seu respectivo nome... no entanto, ao tentar criá-la, me retorna o erro 1046 No database selected...

Os passos foram:

a) Abrir o MySQL Command Line Client;

B) Excluir a função (caso existisse):

drop function if exists mesptbr1;

* ERROR 1046 (3D000): No database selected

c) Trocar o ; por ! (delimitador), pois há ";" no código em C:

delimiter !

d) Criar a função:

create function mesptbr1 (mesnr integer) returns char(9) charset latin1

begin

declare mes char(9);

set mes = "";

if mesnr = 1 then set mes = "Janeiro";

elseif mesnr = 2 then set mes = "Fevereiro";

elseif mesnr = 3 then set mes = "Março";

elseif mesnr = 4 then set mes = "Abril";

elseif mesnr = 5 then set mes = "Maio";

elseif mesnr = 6 then set mes = "Junho";

elseif mesnr = 7 then set mes = "Julho";

elseif mesnr = 8 then set mes = "Agosto";

elseif mesnr = 9 then set mes = "Setembro";

elseif mesnr = 10 then set mes = "Outubro";

elseif mesnr = 11 then set mes = "Novembro";

elseif mesnr = 12 then set mes = "Dezembro";

else set mes="";

end if;

return mes;

end!

* ERROR 1046 (3D000): No database selected

e) Recuperar o delimitador ;

delimiter ;

Bom... então, para criar uma função "global", a ser aceita por em qualquer "alias", qual o database a selecionar?

Abraços!

Link to comment
Share on other sites

  • 0
Guest Denis Courcy

Oi, paulobergo, a solução é simples.

Infelizmente não há como (pelo menos eu não sei como) colocar uma função global. mas você pode Criar um banco "Global", colocar esta função dentro dele e usar.

Exemplo:

Imaginando que tenho um banco chamado "WB" (em continuação com o exemplo anterior), então eu teria a seguinte linha de select

Select concat("Eu Nasci em: ", global.DATA_EXTENSO(p.nasc)) from WB.personagens

where p.personagem = "pernalonga"

O resultado seria

Eu Nasci em: 26 de janeiro de 1955

Onde:

Global é o banco onde está a função e

WB é o banco onde tenho os personagens de desenho animado.

att

Denis Courcy

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...