Get first Sunday of next month using T-SQL

后端 未结 9 2110
梦毁少年i
梦毁少年i 2021-02-09 13:19

Looking for a way to get the date in the format \"11/1/2009\", which would be the first sunday of next month. I want to run this query after the first sunday in october to get

9条回答
  •  悲&欢浪女
    2021-02-09 14:03

    try this:

    Declare @D Datetime 
    Set @D = [Some date for which you want the following months' first sunday]
    Select DateAdd(day, (8-DatePart(weekday, 
        DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)))%7, 
        DateAdd(Month, 1+DateDiff(Month, 0, @D), 0))
    

    EDIT Notes:

    The first of next Month is given by the expression:

    DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)
    

    or by: which can be modified to give the first of the month two months from now by changing the 1 to a 2:

    DateAdd(Month, 2+DateDiff(Month, 0, @D), 0) 
    

    EDIT: In response to @NissanFan, and @Anthony: to modify this to return the first Monday Tuesday Wednesday, etc, change the value 8 to a 9, 10, 11, etc....

    Declare @Sun TinyInt Set @Sun = 8
    Declare @Mon TinyInt Set @Mon = 9
    Declare @Tue TinyInt Set @Tue = 10
    Declare @Wed TinyInt Set @Wed = 11
    Declare @Thu TinyInt Set @Thu = 12
    Declare @Fri TinyInt Set @Fri = 13
    Declare @Sat TinyInt Set @Sat = 14
    Declare @D Datetime, @FONM DateTime -- FirstofNextMonth 
    Set @D = [Some date for which you want the following months' first sunday]
    Set @FONM = DateAdd(Month, 1+DateDiff(Month, 0, @D),0)
    
    Select 
      DateAdd(day, (@Sun -DatePart(weekday, @FONM))%7, @FONM) firstSunInNextMonth,
      DateAdd(day, (@Mon -DatePart(weekday, @FONM))%7, @FONM) firstMonInNextMonth,
      DateAdd(day, (@Tue -DatePart(weekday, @FONM))%7, @FONM) firstTueInNextMonth,
      DateAdd(day, (@Wed -DatePart(weekday, @FONM))%7, @FONM) firstWedInNextMonth,
      DateAdd(day, (@Thu -DatePart(weekday, @FONM))%7, @FONM) firstThuInNextMonth,
      DateAdd(day, (@Fri -DatePart(weekday, @FONM))%7, @FONM) firstFriInNextMonth,
      DateAdd(day, (@Sat -DatePart(weekday, @FONM))%7, @FONM) firstSatInNextMonth
    

提交回复
热议问题