Esta función puede ser modificada dependiendo de las necesidades de cada quien. Se debe tomar en cuenta que esta para el idioma ingles. Lo que hace es extraernos el siguiente miercoles de la fecha que ingresemos de la forma:
select dbo.getnextwednesday ('2006-12-31')
------------------------------------------------------
2007-01-03 00:00:00.000
(1 row(s) affected)
CREATE FUNCTION getnextwednesday (@DATE DATETIME)
RETURNS DATETIME
AS
BEGIN
SET language us_english
DECLARE @dia_actual varchar(15)
DECLARE @valor smallint
SET @dia_actual = datename(dw,@DATE)
IF @dia_actual= 'Wednesday'
SET @valor = 0
IF @dia_actual= 'Tuesday'
SET @valor = 7
IF @dia_actual= 'Thursday'
SET @valor = 6
IF @dia_actual= 'Friday'
SET @valor = 5
IF @dia_actual= 'Saturday'
SET @valor = 4
IF @dia_actual= 'Sunday'
SET @valor = 3
IF @dia_actual= 'Monday'
SET @valor = 2
IF @dia_actual= 'Tuesday'
SET @valor = 1
SELECT @DATE = @DATE + @valor
RETURN (@DATE)
END