2012-06-19 17 views
6

Ho trovato un paio di esempi online ma non capisco come funziona. ad esempioTrova l'algoritmo della data della domenica precedente

 SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

Non sono nemmeno sicuro che faccia ciò che voglio.

Quello che mi serve è che quando la query viene eseguita, è possibile che SELECT * from xTable WHERE xDate sia tra due date. Ultima domenica e domenica prossima (settimana corrente). Cosa potrei usare per trovarlo automaticamente? E per favore spiegami perché sono nuovo di SQL.

+4

Non capisco perché qualcuno possa votare per la chiusura come _ "non una vera domanda" _. È chiaro cosa OP vuole sapere: come ottenere i record della settimana corrente. Ma la domanda è, hai provato la query e ha restituito il risultato sbagliato? –

+0

In realtà restituisce una data Non riesco a trovare abbastanza come utilizzare questa query per ottenere il mio risultato. – phadaphunk

risposta

4

ho guardato più a fondo nel tentativo di comprendere questa query

SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

e lo usò per prelevare il lunedi precedente. Ora posso semplicemente DATEADD altri 6 giorni per ottenere un'intera settimana.

La soluzione che ho usato:

 Set @Monday = DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 
     Set @Sunday = DATEADD(dd, 06, @Monday) 

Problema risolto.

+0

Se non ci sono date future nella tabella, questo è il modo più efficiente: 'SELEZIONA * da xTabella WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0)'. Se si desidera limitare le date future (più di una settimana): 'SELECT * da xTable WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0) AND xDate

+0

Si tratta di un rapporto che in realtà ha dimenticato di menzionare. Quindi se qualcuno vuole ristampare un rapporto di due mesi fa ci saranno alcune date future che temono. Ma l'ho provato e funziona perfettamente se non è per il problema delle date future. Grazie:) – phadaphunk

Problemi correlati