Prueba esto:
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))
Notas Editar:
El primero del próximo mes es dado por la expresión:
DateAdd(Month, 1+DateDiff(Month, 0, @D), 0)
o por: que puede ser modificado para dar el primero del mes dos meses a partir de ahora cambiando el 1 a un 2:
DateAdd(Month, 2+DateDiff(Month, 0, @D), 0)
EDIT: En respuesta a @NissanFan y @Anthony: Para modificar este para devolver el primer Lunes Martes Miércoles, etc, cambie el valor 8 a un 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
¿Desea ejecutar esta consulta solo una vez? O bien, ¿desea una consulta que siempre usará la fecha del próximo primer domingo (de modo que si ha sucedido en el mes actual, recibe esta, pero si ha pasado, se obtiene el próximo mes)? – Anthony
Corrija que se ejecute cada mes para obtener la fecha del primer domingo del mes siguiente. Se ejecutará en un trabajo y establecerá una fecha en una tabla que almacena la próxima fecha allí. – Matt
Si siempre quiere el mes "siguiente", del cual no estaba seguro, no necesita la complicada solución que publiqué. :) –