How to find the Nearest (day of the week) for a given date

后端 未结 3 649
长情又很酷
长情又很酷 2021-01-22 18:32

I been practicing queries, and my current scenario is to find the nearest Saturday for a given date. After i got the logic down, i came up with a, whats looks like a long and me

3条回答
  •  执念已碎
    2021-01-22 19:01

    Well not exactly an answer, but an alternative

        DECLARE @DATE DATE,
        @SUN DATE,
        @MON DATE,
        @TUE DATE,
        @WED DATE,
        @THU DATE,
        @FRI DATE,
        @SAT DATE
    
               SET @DATE = '2013-09-14'
    
        SET @SUN = DATEADD(DAY,-1,@DATE)
        SET @MON = DATEADD(DAY,-1,@DATE)
        SET @TUE = DATEADD(DAY,-2,@DATE)
        SET @WED = DATEADD(DAY,-3,@DATE)
        SET @THU = DATEADD(DAY,2,@DATE)
        SET @FRI = DATEADD(DAY,1,@DATE)
        SET @SAT = DATEADD(DAY,0,@DATE)
    
        SELECT CASE 
            WHEN DATENAME(DW,@DATE) = 'SUNDAY'
            THEN @SUN
            WHEN DATENAME(DW,@DATE) = 'MONDAY'
            THEN @MON
            WHEN DATENAME(DW,@DATE) = 'TUESDAY'
            THEN @TUE
            WHEN DATENAME(DW,@DATE) = 'WEDNESDAY'
            THEN @WED
            WHEN DATENAME(DW,@DATE) = 'THURSDAY'
            THEN @THU
            WHEN DATENAME(DW,@DATE) = 'FRIDAY'
            THEN @FRI
            ELSE @SAT
        END
    

提交回复
热议问题