none
Consulta Datas RRS feed

Respostas

  • Bom dia,

    Experimente dessa forma:

    set datefirst 7;
    declare @Data date;
    declare @DataFim date;
    set @Data = datefromparts(2019, 1, 1);
    set @DataFim = dateadd(day, -1, dateadd(year, 1, @Data));
    
    with CTE_Rec as
    (
        select 
            case when datepart(weekday, @Data) = 2 
                then @Data
                else dateadd(day, 9 - datepart(weekday, @Data), @Data)
            end as Data
            
        union all
        
        select
            dateadd(week, 1, Data)
        from CTE_Rec
        where 
            dateadd(week, 1, Data) <= @DataFim
    )
    
    select * from CTE_Rec

    Espero que ajude


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

    quinta-feira, 24 de outubro de 2019 15:34

Todas as Respostas

  • Da uma olhada nesse link:
    https://www.devmedia.com.br/funcao-que-retorna-o-dia-da-semana/2272

    Espero que ajude
    quinta-feira, 24 de outubro de 2019 15:30
  • Bom dia,

    Experimente dessa forma:

    set datefirst 7;
    declare @Data date;
    declare @DataFim date;
    set @Data = datefromparts(2019, 1, 1);
    set @DataFim = dateadd(day, -1, dateadd(year, 1, @Data));
    
    with CTE_Rec as
    (
        select 
            case when datepart(weekday, @Data) = 2 
                then @Data
                else dateadd(day, 9 - datepart(weekday, @Data), @Data)
            end as Data
            
        union all
        
        select
            dateadd(week, 1, Data)
        from CTE_Rec
        where 
            dateadd(week, 1, Data) <= @DataFim
    )
    
    select * from CTE_Rec

    Espero que ajude


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

    quinta-feira, 24 de outubro de 2019 15:34
  • Exatamente isso !!

    Muito obrigado !!
    • Marcado como Resposta MoNsTr0o quinta-feira, 24 de outubro de 2019 17:02
    • Não Marcado como Resposta MoNsTr0o quinta-feira, 24 de outubro de 2019 17:02
    quinta-feira, 24 de outubro de 2019 17:02
  • Percebi que o resultado da query sugerida anteriormente não está correto quando o dia 01 de janeiro é em um domingo. Segue pequena alteração:

    set datefirst 1;
    declare @Data date;
    declare @DataFim date;
    set @Data = datefromparts(2019, 1, 1);
    set @DataFim = dateadd(day, -1, dateadd(year, 1, @Data));
    
    with CTE_Rec as
    (
        select 
            case when datepart(weekday, @Data) = 1
                then @Data
                else dateadd(day, 8 - datepart(weekday, @Data), @Data)
            end as Data
            
        union all
        
        select
            dateadd(week, 1, Data)
        from CTE_Rec
        where 
            dateadd(week, 1, Data) <= @DataFim
    )
    
    select * from CTE_Rec

    Espero que ajude


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

    quinta-feira, 24 de outubro de 2019 17:19
  • Deleted
    quinta-feira, 24 de outubro de 2019 20:47