2013-10-18 11 views
5

Sono appena arrivato alla query del server sql. Ho una colonna chiamata duedate. Voglio filtrare i dati duedate entro il mese corrente.SQL Server - Mostra le date nel mese corrente

SELECT * FROM TABLE1 WHERE duedate = within current month only 

Grazie in anticipo.

risposta

13

È necessario utilizzare una query di intervallo anziché avvolgere la colonna in una chiamata di funzione in modo che possa essere utilizzato un indice.

SELECT * 
FROM TABLE1 
WHERE duedate >= DATEADD(month, DATEDIFF(month, 0, getdate()), 0) 
     AND duedate < DATEADD(month, 1 + DATEDIFF(month, 0, getdate()), 0) 
+1

Questa query utilizza l'indice nella colonna. –

+1

Ma non dimenticarti di [questo problema] (http://www.sqlperformance.com/2013/09/t-sql-queries/datediff-bug) che mi hai reso più intelligente su [here] (http://stackoverflow.com/a/18242413/61305). –

+0

@AaronBertrand - Buon punto, peccato che non abbiano menzionato la versione di SQL Server. La soluzione alternativa alla domanda collegata è 2008+. –

Problemi correlati