none
Select DATEPART RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Por favor, me ajudem numa situação.

    Tenho a seguinte data 07/03/2014.

    Preciso montar um select que resulte.

    Março/2014

    Abril/2014

    Maio/2014

    nnnn...

    Repedindo até completar 48 meses, incluindo a data inicial.


    Gregorio

    sexta-feira, 4 de abril de 2014 18:41

Respostas

  • Boa tarde,

    Gregorio, não sei se entendi corretamente sua questão, mas experimente fazer um teste com  o script abaixo:

    declare @Data date;
    set @Data = '20140307';
    
    with CTE_Datas as
    (
        select 
            DATEADD(DAY, 1 - DAY(@Data), @Data) as Data, 
            1 as Numero
    
        union all
        
        select
            DATEADD(MONTH, 1, Data),
            Numero + 1
        from CTE_Datas
        where Numero < 48
    )
    
    select * from CTE_Datas

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Giovani Cr sexta-feira, 4 de abril de 2014 19:34
    • Marcado como Resposta Gregorio Venturim sexta-feira, 4 de abril de 2014 19:56
    sexta-feira, 4 de abril de 2014 19:21

Todas as Respostas

    • Sugerido como Resposta Giovani Cr sexta-feira, 4 de abril de 2014 19:34
    sexta-feira, 4 de abril de 2014 18:59
  • Boa tarde,

    Gregorio, não sei se entendi corretamente sua questão, mas experimente fazer um teste com  o script abaixo:

    declare @Data date;
    set @Data = '20140307';
    
    with CTE_Datas as
    (
        select 
            DATEADD(DAY, 1 - DAY(@Data), @Data) as Data, 
            1 as Numero
    
        union all
        
        select
            DATEADD(MONTH, 1, Data),
            Numero + 1
        from CTE_Datas
        where Numero < 48
    )
    
    select * from CTE_Datas

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Giovani Cr sexta-feira, 4 de abril de 2014 19:34
    • Marcado como Resposta Gregorio Venturim sexta-feira, 4 de abril de 2014 19:56
    sexta-feira, 4 de abril de 2014 19:21
  • Pessoal, boa tarde.

    Por favor, me ajudem numa situação.

    Tenho a seguinte data 07/03/2014.

    Preciso montar um select que resulte.

    Março/2014

    Abril/2014

    Maio/2014

    nnnn...

    Repedindo até completar 48 meses, incluindo a data inicial.


    Gregorio

    Gregório,

    Apenas complementando à solução do gapimex, para retornar apenas "Mes/Ano" em português.

    SET LANGUAGE Brazilian;
    GO
    
    DECLARE @DATA DATE;
    SET @DATA = '20140307';
    
    with CTE_Datas as
    (
        select 
            right(convert(varchar, DATEADD(DAY, 1 - DAY(@Data), @Data), 106), 8) as MES_ANO, 
            1 as Numero
    
        union all
        
        select
            right(convert(varchar, DATEADD(MONTH, 1, MES_ANO), 106), 8) AS MES_ANO,
            Numero + 1
        from CTE_Datas
        where Numero < 48
    )
    
    SELECT MES_ANO from CTE_Datas
    GO

    Segue um print da solução do gapimex com minha formatação em português:

    Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 4 de abril de 2014 19:48
    Moderador