Usuário com melhor resposta
Buscar nome do mês no SQL 2008

Pergunta
-
Boa tarde!
Estou utilizando o SQL 2008 e preciso de uma sentença que retorne o mês vigente por extenso. Alguém pode me ajudar? Consegui, parcialmente, via Business Inteligence Development Studio.
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
sexta-feira, 14 de dezembro de 2012 17:20
Respostas
-
Eduardo,
O campo da sua consulta SQL que retorna o mês ou data, a coluna da qual você deseja extrair o mês, está retornando o valor literal em inglês? Se sim substitua cada linha do switch por:
Fields!NomeDoSeuCampo.Value = <ValorEsperado (Ex.: "December")>, "Dezembro"
Espero ter ajudado.
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Marcado como Resposta Eduardo_Amaral quinta-feira, 2 de maio de 2013 20:04
quinta-feira, 3 de janeiro de 2013 19:03
Todas as Respostas
-
Eduardo,
Voce consegue assim:
SELECT DATENAME(MONTH, GETDATE())
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.comsexta-feira, 14 de dezembro de 2012 17:34Moderador -
Obrigado, Fabrício.
A sentença retornou "December". Como faço para convertê-la para o Português "Dezembro"?
Valeu!
Eduardo
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
sexta-feira, 14 de dezembro de 2012 17:44 -
Eduardo,
Tenta assim:
SET LANGUAGE Português GO SELECT DATENAME(MONTH, GETDATE())
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Sugerido como Resposta Marcos Rocha sexta-feira, 14 de dezembro de 2012 18:52
sexta-feira, 14 de dezembro de 2012 18:15 -
Eduardo,
O SET LANGUAGE server para retornar a data no idioma desejado, para verificar o idioma padrão de sua sessão execute “DBCC UserOptions”
Para visualizar qual é o nome dos idiomas existentes no SQL verifique na coluna name da tabela sysLanguages.
select * from master.dbo.syslanguages
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
sexta-feira, 14 de dezembro de 2012 18:18 -
Fabrizzio, estou quase lá. Usei o Case. Veja.
SELECT
CASE WHEN DATENAME(MONTH, GETDATE()) = 'December' THEN 'Dezembro' ENDResultado = 'Dezembro' -- ok, porém preciso de outros meses.
TENTEI O SEGUINTE:
SELECT
CASE WHEN DATENAME(MONTH, GETDATE()) = 'December' THEN 'Dezembro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'November' THEN 'Novembro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'October' THEN 'Novembro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'September' THEN 'Outubro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'August' THEN 'Setembro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'July' THEN 'Julho' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'June' THEN 'Junho' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'May' THEN 'Maio' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'April' THEN 'Abril' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'March' THEN 'Março' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'February' THEN 'Fevereiro' ELSE
CASE WHEN DATENAME(MONTH, GETDATE()) = 'January' THEN 'Janeiro'
END
END
END
END
END
END
END
END
END
END
END--- RETORNOU O ERRO
Mensagem 125, Nível 15, Estado 4, Linha 14
Case expressions may only be nested to level 10.O QUE FAÇO PARA CORRIGIR ESSE CASE??
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
sexta-feira, 14 de dezembro de 2012 18:42 -
Marcos, pensei nisso. Mas fiquei com receio de interferir em outras programações existentes vinculadas a base.
Existe essa possibilidade?
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
sexta-feira, 14 de dezembro de 2012 19:00 -
Eduardo,
O SET LANGUAGE vai funcionar apenas para essa transação não afetará seu ambiente, ao fim da transação ela perderá o efeito.
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
sábado, 15 de dezembro de 2012 16:46 -
Eduardo,
O SET LANGUAGE vai funcionar apenas para essa transação não afetará seu ambiente, ao fim da transação ela perderá o efeito.
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
sábado, 15 de dezembro de 2012 16:46 -
Eduardo,
O SET LANGUAGE vai funcionar apenas para essa transação não afetará seu ambiente, ao fim da transação ela perderá o efeito.
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
sábado, 15 de dezembro de 2012 16:46 -
Olá Eduardo,
A opção que o Marcos Rocha passou terá um melhor desempenho, mas se ainda assim você necessitar utilizar a consulta que você criou apenas retire os ELSE's que você colocou. Como essa abaixo.
ELECT
CASE WHEN DATENAME(MONTH, GETDATE()) = 'December' THEN 'Dezembro'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'November' THEN 'Novembro'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'October' THEN 'Outubro'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'September' THEN 'Setembro'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'August' THEN 'Agosto'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'July' THEN 'Julho'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'June' THEN 'Junho'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'May' THEN 'Maio'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'April' THEN 'Abril'CASE WHEN DATENAME(MONTH, GETDATE()) = 'March' THEN 'Março'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'February' THEN 'Fevereiro'
CASE WHEN DATENAME(MONTH, GETDATE()) = 'January' THEN 'Janeiro'END
Se a resposta foi util, classifique-a
Att, Marcos Freccia [MCTS|MCITP|MCT SQL Server 2008]
quinta-feira, 20 de dezembro de 2012 00:36 -
Bom dia!
Marcos, tentei a opção sugerida por você (SET LANGUAGE), funcionou perfeitamente na execução via "Management Studio" porém via BIDs (Designer de consulta) não funcionou. Apresentou erro de sintaxe.
SET LANGUAGE Português GO
SELECT DISTINCT
PPESSOA.NOME AS [ALUNO(A)], SALUNO.RA, SHABILITACAO.NOME + ' do(a) ' + SCURSO.NOME AS ANO_SERIE_CURSO, PPAI.NOME AS PAI,
PMAE.NOME AS MAE, SPLETIVO.CODPERLET, STURNO.NOME, PPESSOA.DTNASCIMENTO AS [DT NASC], DATEPART(day, SYSDATETIME()) AS day,
DATEPART(year, SYSDATETIME()) AS ano, GFILIAL.NOME AS FILIAL, GFILIAL.CIDADE, DATENAME(MONTH, GETDATE())Marcos Freccia,
tentei tirar os Else's conforme indicado, porém dá erro de sintaxe. São necessários os Elses. Tem outra opção?
Agradeço vocês. Feliz ano novo!!!
Abraço!
Eduardo Amaral
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
quarta-feira, 2 de janeiro de 2013 13:17 -
Ola Eduardo,
Me desculpe, realmente a sintaxe está errada. Segue a instrução correta.
SELECT Mes =
CASE WHEN DATENAME(MONTH, GETDATE()) = 'December' THEN 'Dezembro'
WHEN DATENAME(MONTH, GETDATE()) = 'November' THEN 'Novembro'
WHEN DATENAME(MONTH, GETDATE()) = 'October' THEN 'Outubro'
WHEN DATENAME(MONTH, GETDATE()) = 'September' THEN 'Setembro'
WHEN DATENAME(MONTH, GETDATE()) = 'August' THEN 'Agosto'
WHEN DATENAME(MONTH, GETDATE()) = 'July' THEN 'Julho'
WHEN DATENAME(MONTH, GETDATE()) = 'June' THEN 'Junho'
WHEN DATENAME(MONTH, GETDATE()) = 'May' THEN 'Maio'
WHEN DATENAME(MONTH, GETDATE()) = 'April' THEN 'Abril'WHEN DATENAME(MONTH, GETDATE()) = 'March' THEN 'Março'
WHEN DATENAME(MONTH, GETDATE()) = 'February' THEN 'Fevereiro'
WHEN DATENAME(MONTH, GETDATE()) = 'January' THEN 'Janeiro'END
Quanto ao bids não funcionar, você poderia passar qual a mensagem de erro gerada?
Se a resposta foi útil, classifique
Att,
Marcos Freccia [MTA|MCTS|MCITP|MCT SQL Server 2008]
Blog|Twitter
Assine também os feeds clicando aqui- Sugerido como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 3 de janeiro de 2013 15:35
quarta-feira, 2 de janeiro de 2013 15:56 -
Marcos,
Adicionei parte da sentença que você informou, com a declaração da variável "mes" e sem a declaração, agora traz NULL onde deveria trazer o nome do mês. Isso no Management Studio. Segue sentença. O que pode estar acontecendo agora meu caro? Obrigado mais uma vez
DECLARE @MES VARCHAR;
SELECT DISTINCT PPESSOA.NOME AS [ALUNO(A)], SALUNO.RA, SHABILITACAO.NOME + ' do(a) ' + SCURSO.NOME AS ANO_SERIE_CURSO, PPAI.NOME AS PAI, PMAE.NOME AS MAE,
SPLETIVO.CODPERLET, STURNO.NOME, PPESSOA.DTNASCIMENTO AS [DT NASC], DATEPART(day, SYSDATETIME()) AS day, DATEPART(year, SYSDATETIME())
AS ano, GFILIAL.NOME AS FILIAL, GFILIAL.CIDADE,
MES =
CASE WHEN DATENAME(MONTH, GETDATE()) = 'December' THEN 'Dezembro'
WHEN DATENAME(MONTH, GETDATE()) = 'November' THEN 'Novembro'
WHEN DATENAME(MONTH, GETDATE()) = 'October' THEN 'Outubro'
WHEN DATENAME(MONTH, GETDATE()) = 'September' THEN 'Setembro'
WHEN DATENAME(MONTH, GETDATE()) = 'August' THEN 'Agosto'
WHEN DATENAME(MONTH, GETDATE()) = 'July' THEN 'Julho'
WHEN DATENAME(MONTH, GETDATE()) = 'June' THEN 'Junho'
WHEN DATENAME(MONTH, GETDATE()) = 'May' THEN 'Maio'
WHEN DATENAME(MONTH, GETDATE()) = 'April' THEN 'Abril'
WHEN DATENAME(MONTH, GETDATE()) = 'March' THEN 'Março'
WHEN DATENAME(MONTH, GETDATE()) = 'February' THEN 'Fevereiro'
WHEN DATENAME(MONTH, GETDATE()) = 'January' THEN 'Janeiro'END
Erro ao inserir Set Language no BIDS.
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
quarta-feira, 2 de janeiro de 2013 18:58 -
Edurdo,
No caso do BIDS você pode utilizar uma máscara no campo, você irá pegar o campo que recebe esse valor "December" por exemplo e nas propriedades do campo você define uma função para retornar o valor "Mascarado"
Tenta fazer assim:
Use a função Switch
=Switch ( Fields!MES.Value = 1, "Janeiro", Fields!MES.Value = 2, "Fevereiro", Fields!MES.Value = 3, "Março", Fields!MES.Value = 4, "Abril", Fields!MES.Value = 5, "Maio", Fields!MES.Value = 6, "Junho", Fields!MES.Value = 7, "Julho", Fields!MES.Value = 8, "Agosto", Fields!MES.Value = 9, "Setembro", Fields!MES.Value = 10, "Outubro", Fields!MES.Value = 11, "Novembro", Fields!MES.Value = 12, "Dezembro" )
Nesse caso o meu retorno é o número referente ao mês, mas você pode adaptar para a string do nome do mês em inglês.
A fução Switch troca o valor retornado (1º parâmetro) pelo valor passado (2º parâmetro)
Espero que o ajude
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Sugerido como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 3 de janeiro de 2013 15:35
quarta-feira, 2 de janeiro de 2013 19:15 -
Eduardo,
Um detalhe a palavra Português não é reconhecida, você tem que substituir por Portuguese e outra coisa, o comando Go é reconhecido somente no Management Studio pois não é um comando da Linguagem T-SQL, mas sim uma instrução de processamento por parte do Management Studio.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
quinta-feira, 3 de janeiro de 2013 15:36Moderador -
Marcos, obrigado mais uma vez mas ainda não funcionou. Entendi perfeitamente a sua sugestão, mas veja abaixo o erro. Tentei com o mês escrito das duas formas (ingles - portugues).
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
quinta-feira, 3 de janeiro de 2013 17:15 -
Eduardo,
Tenta retornar essemês como número que eu acho que vai dar certo. (só retirar o MONTH() do campo na consulta SQL)
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Sugerido como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 3 de janeiro de 2013 17:39
quinta-feira, 3 de janeiro de 2013 17:19 -
Marcos,
a consulta SQL, conforme enviado acima, não possui a expressão que você citou "MONTH()". Existe apenas no Switch (mesmo assim, sem o parenteses) porém faz referencia ao campo desejado e, posteriormente, o nome do mês que eu desejo que retorne.
Abs.,
Eduardo
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
quinta-feira, 3 de janeiro de 2013 18:42 -
Eduardo,
O campo da sua consulta SQL que retorna o mês ou data, a coluna da qual você deseja extrair o mês, está retornando o valor literal em inglês? Se sim substitua cada linha do switch por:
Fields!NomeDoSeuCampo.Value = <ValorEsperado (Ex.: "December")>, "Dezembro"
Espero ter ajudado.
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Marcado como Resposta Eduardo_Amaral quinta-feira, 2 de maio de 2013 20:04
quinta-feira, 3 de janeiro de 2013 19:03 -
Obrigado!
Eduardo Gleison Gonçalves Amaral eduardogleison@gmail.com
quinta-feira, 2 de maio de 2013 20:04 -
SELECT
CASE DATEPART(MONTH, GETDATE())
WHEN 1 THEN 'Janeiro'
WHEN 2 THEN 'Fevereiro'
WHEN 3 THEN 'Março'
WHEN 4 THEN 'Abril'
WHEN 5 THEN 'Maio'
WHEN 6 THEN 'Junho'
WHEN 7 THEN 'Julho'
WHEN 8 THEN 'Agosto'
WHEN 9 THEN 'Setembro'
WHEN 10 THEN 'Outubro'
WHEN 11 THEN 'Novembro'
WHEN 12 THEN 'Dezembro'
END AS MESsegunda-feira, 15 de agosto de 2016 20:20