diogoleter Postado Outubro 1, 2007 Denunciar Share Postado Outubro 1, 2007 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 2007Alguém saberia algum meio, se é que existe, do MySQL retornar no nome do Mês em PT-BR?OBrigado! Link para o comentário Compartilhar em outros sites More sharing options...
0 paulobergo Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 ô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, criadoempernalonga, nascido a 26 de janeiro de 1955papaleguas, nascido a 14 de outubro de 1958coiote, nascido a 14 de outubro de 1958Só não sei se funciona em todas as versões... mas pelo menos nos my4 e my5, com certeza!Ok? Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Denis Courcy Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 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 latin1BEGIN 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 seriaEu Nasci em: 26 de janeiro de 1955attDenis Courcy Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Denis Courcy Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 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 latin1BEGIN 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 seriaEu Nasci em: 26 de janeiro de 1955attDenis Courcy Link para o comentário Compartilhar em outros sites More sharing options...
0 paulobergo Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 Ó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 selectedc) 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 latin1begin 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 selectede) 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 para o comentário Compartilhar em outros sites More sharing options...
0 Guest Denis Courcy Postado Outubro 4, 2007 Denunciar Share Postado Outubro 4, 2007 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 selectSelect concat("Eu Nasci em: ", global.DATA_EXTENSO(p.nasc)) from WB.personagenswhere p.personagem = "pernalonga"O resultado seriaEu Nasci em: 26 de janeiro de 1955Onde:Global é o banco onde está a função e WB é o banco onde tenho os personagens de desenho animado. attDenis Courcy Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
diogoleter
Olá,
Hoje me deparei com um tipo de problema que pode ou não ter uma solução simples. Tenho um SELECT deste tipo:
Até ai tudo bem, mas um exemplo de resultado seria:Alguém saberia algum meio, se é que existe, do MySQL retornar no nome do Mês em PT-BR?
OBrigado!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados