none
Consultar o mes atual diariamente e meses anteriores fechados RRS feed

  • Pergunta

    1. Olá pessoal boa tarde tudo bem?

    Estou precisando de uma ajuda em uma questão que nunca precisei.

    Tenho que construir um select no qual eu precise o mês atual diariamente como por exemplo Julho apresentar os dias (1,2,3, ...) e no mês anterior me mostre somente o ultimo dia do mês (janeiro (31), fevereiro(28), marco (31) e assim por diante.

    Alguém já precisou construir algo parecido que possa compartilhar?

    Desde muito obrigado

    Leandro

    sexta-feira, 2 de julho de 2021 20:44

Respostas

  • Pessoal bom dia,

    Obrigado a todos que contribuíram com minha dúvida, mas consegui resolver com um UNION ALL, trazendo primeiro a MAX(DATA) e na UNION trazendo Year e Month com GETDATE(), resolveu meu problema :D.

    Mas uma vez muito obrigado

    • Marcado como Resposta Leandro Silva segunda-feira, 12 de julho de 2021 12:34
    segunda-feira, 12 de julho de 2021 12:33

Todas as Respostas

  • Olá amigo Leandro,

    Existe um função chamada EOMONTH(). 

    Está função vai lhe ajudar com o que necessita. 

    SELECT    
    	EOMONTH( DATEADD(MONTH, -2, getdate())) as 'ultima dia completo 2 meses atrás'
    	,day(EOMONTH( DATEADD(month, -2, getdate()))) as 'somente o ultimo dia de 2 meses atrás'
    	,EOMONTH( DATEADD(MONTH, -1, getdate())) as 'ultima dia do mês anterior'
    	,day(EOMONTH( DATEADD(month, -1, getdate()))) as 'somente o ultimo dia de 1 mes atrás'
    	, getdate() as 'Hoje'
    	,EOMONTH(getdate()) as 'ultima dia do mês atual'
    	,DAY(EOMONTH(getdate())) as 'somente o ultimo dia do mês atuala' 
    	

    Fiz um exemplo pra ver se é o que quer mais ou menos.

    Caso não for, nos dê mais detalhes por favor.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    segunda-feira, 5 de julho de 2021 14:03
  • Leandro,

    Complementando o exemplo do Jefferson, veja o código abaixo:

    -- Exemplo 1 --
    DECLARE @date DATETIME = GETDATE()
    
    SELECT EOMONTH ( @date ) AS 'Este mês'  
    SELECT EOMONTH ( @date, 1 ) AS 'Próximo mês'
    SELECT EOMONTH ( @date, -1 ) AS 'Mês Anterior'
    GO
    
    -- Exemplo 2 --
    DECLARE @date DATETIME = GETDATE();  
    
    SELECT EOMONTH ( @date ) AS 'Este mês',  
           EOMONTH ( @date, 1 ) AS 'Próximo mês',
           EOMONTH ( @date, -1 ) AS 'Mês Anterior'
    GO

    Este exemplo foi obtido com base na documentação oficial da função EOMonth() adicionada ao SQL Server a partir da versão 2012.

    Recomendo acessar a documentação de outras funções para manipulação de data e hora que poderão lhe ajudar:

    https://docs.microsoft.com/en-us/sql/t-sql/functions/datename-transact-sql

    https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 7 de julho de 2021 17:41
  • Pessoal bom dia,

    Obrigado a todos que contribuíram com minha dúvida, mas consegui resolver com um UNION ALL, trazendo primeiro a MAX(DATA) e na UNION trazendo Year e Month com GETDATE(), resolveu meu problema :D.

    Mas uma vez muito obrigado

    • Marcado como Resposta Leandro Silva segunda-feira, 12 de julho de 2021 12:34
    segunda-feira, 12 de julho de 2021 12:33