spróbuj tego:
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))
edytować notatki:
Pierwszy następnego miesiąca jest przez wyrażenie:
DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)
lub przez: które mogą być modyfikowane, aby dać pierwszy miesiąc za dwa miesiące, zmieniając 1 na 2:
EDIT: W odpowiedzi na @NissanFan i @Anthony: Aby zmodyfikować ten powrót pierwszy Poniedziałek Wtorek Środa, etc, zmień wartość 8 do 9, 10, 11, itd ....
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
Więc chcesz uruchomić to zapytanie tylko raz? Lub chcesz zapytanie, które zawsze będzie używać daty nadchodzącej pierwszej niedzieli (tak, że jeśli stało się to w bieżącym miesiącu, dostaje to, ale jeśli minęło, to dostaje następny miesiąc)? – Anthony
Popraw to powinno być uruchamiane co miesiąc, aby uzyskać datę pierwszej niedzieli w nadchodzącym miesiącu. Będzie działać w zadaniu i ustawi datę w tabeli przechowującej następną datę. – Matt
Jeśli zawsze chcesz "następnego" miesiąca, o którym nie byłam pewna, nie potrzebujesz skomplikowanego rozwiązania, które napisałem. :) –