2012-10-22 9 views
5

Ho una tabella denominata "azioni" con una colonna DATETIME denominata "avvenuta". Sto cercando di restituire i record per oggi facendo il seguenteMySQL restituisce i record di oggi utilizzando DATE dal campo DATETIME

SELECT * FROM `actions` WHERE `occurred` = DATE(NOW()); 

Ma ottengo un set di risultati vuoto. Se prendo la clausola WHERE, posso vedere tutte le 295 righe nella tabella e ci sono almeno 30 righe da oggi. Più tardi scriverò un'altra query per restituire tutti i record tra la data odierna e la quantità X di giorni passati, ma prima che riesca ad arrivarci devo sapere perché questa query restituisce un set di risultati vuoto.

Grazie in anticipo.

risposta

4

Se lì in alcuna data futura in occurred, si potrebbe utilizzare di seguito:

SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY); 
+0

Questa grande opera. Non ci saranno dati futuri. Sarà strettamente per confrontare ORA contro le voci storiche. Grazie per la risposta rapida! – rws907

7
SELECT * FROM actions WHERE DATE(ocurred) = CURDATE(); 

DATE(ocurred) ignora la parte di tempo.

Ecco il violino SQL per giocare con i dati: http://www.sqlfiddle.com/#!2/81708/2

Problemi correlati