2010-10-14 27 views
8

Cercare una query/query SQL che determinerebbe il giorno di inizio (lunedì) della settimana corrente.trovare il giorno di inizio (lunedì) della settimana corrente

Esempio: Se oggi è -> quindi l'inizio della settimana è

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 

Ho visto molte "soluzioni" su Google e StackOverflow. Il qualcosa di simile a:

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

Questo fallisce perché: Sun 10 ottobre 2010 -> Inizio di settimana Lunedi 11 ottobre, 2010 (che non è corretto).

+0

Avete bisogno di trovare solo Lunedi o il primo giorno lavorativo della settimana? –

+0

Voglio l'inizio della settimana (lunedì) indipendentemente dal fatto che si tratti di un giorno lavorativo o di una vacanza. –

risposta

12

Provare a utilizzare DATEFIRST per impostare esplicitamente il giorno della settimana da considerare come il "primo".

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

Ciò restituirà il Lunedi della settimana della InputDate cade in.

+0

Ho trovato un'altra soluzione, ma questa è molto più semplice e pulita. Grazie. –

+0

come possiamo arrivare a trovare l'ultima settimana scorsa lunedì? Ho provato a fare 2 in espressione invece di 1, ma senza fortuna. Eventuali suggerimenti? –

Problemi correlati