2010-10-14 11 views
8

Buscando una consulta SQL/consultas que determinarían el día de inicio (lunes) de la semana actual.buscando el día de inicio (lunes) de la semana actual

Ejemplo: Si hoy es -> entonces el comienzo de la semana es

Sat Oct 09, 2010 -> Start of the week is Monday Oct 04, 2010 
Sun Oct 10, 2010 -> Start of the week is Monday Oct 04, 2010 
Mon Oct 11, 2010 -> Start of the week is Monday Oct 11, 2010 
Tue Oct 12, 2010 -> Start of the week is Monday Oct 11, 2010 

he visto muchas "soluciones" en Google y StackOverflow. El aspecto algo como:

SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111) 
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

Esta falla porque: Dom Oct 10 2010 -> Inicio de semana Lunes Oct 11 del 2010 (lo cual es incorrecto).

+0

¿Necesita encontrar solamente el lunes o el primer día hábil de la semana? –

+0

Quiero el comienzo de la semana (lunes) independientemente de si es un día laboral o festivo. –

Respuesta

12

Intente usar DATEFIRST para establecer explícitamente el día de la semana para ser considerado como el "primer".

set DATEFIRST 1 --Monday 
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

Esto devolverá el lunes de la semana del InputDate cae en.

+0

Encontré otra solución, pero esta es mucho más simple y más limpia. Gracias. –

+0

¿cómo podemos hacer para encontrar la última a la semana pasada el lunes? Traté de hacer 2- en expresión en lugar de 1-, pero no tuve suerte. ¿Alguna sugerencia? –

Cuestiones relacionadas