2011-12-13 9 views
9

Come si seleziona una colonna datetime per mese?MS SQL seleziona un datetime per mese?

TABLE A 
TITLE MY_DATETIME 
blah 2011-03-26 05:44:43.213 

SELECT * 
FROM TABLE A 
WHERE MY_DATETIME = "August" 
+4

'WHERE month (MY_DATETIME) = 8' – Raihan

+0

@MGA: Esiste in SQL Server 2008. Rif: http://msdn.microsoft.com/en-us/library/ms187813.aspx – Raihan

+0

@MGA: davvero? Ci sono stato per sempre http://msdn.microsoft.com/en-us/library/ms187813.aspx e http://msdn.microsoft.com/en-us/library/aa933239(SQL.80).aspx – gbn

risposta

18
SELECT * 
FROM TABLE A 
WHERE DATEPART(month, MY_DATETIME) = 8 

Oppure, meno affidabile based on language impostazione:

... 
WHERE DATENAME(month, MY_DATETIME) = 'August' 
+0

Forse, non esiste una soluzione migliore per il problema poiché è impostata, ma questo è il modo giusto per Index Scan. –

+0

@Igor: i requisiti per il mese indicano che non è possibile effettuare il check in date. Potrebbe essere una domanda difficile se – gbn

0
SELECT * 
FROM TABLE A 
WHERE DATENAME(MONTH, MY_DATETIME) = 'August' 
+0

Questo si rompe in alcuni casi strani: http://stackoverflow.com/a/1500018/27535 – gbn

0

Io uso EXTRACT funzione invece di DATEPART. DATEPART la funzione non esiste nel mio mysql.

Problemi correlati