2012-12-06 19 views

risposta

9

ti suggerisco di usare sempre cl intervalli aperti (chiusi-aperti) per confronti di date e ore. BETWEEN significa intervalli chiusi (da entrambi i lati). Una buona spiegazione è nel post del blog @Aaron Bertrand's: What do BETWEEN and the devil have in common?. Ecco un modo di scrivere la query:

SELECT * 
FROM programs 
WHERE startTime >= NOW() 
    AND startTime < CURRENT_DATE() + INTERVAL 1 DAY ; 
4
SELECT * FROM programs where startTime between now() and CURRENT_DATE() + INTERVAL 1 DAY; 

La data restituisce l'inizio della giornata, quindi aggiungiamo 1 giorno per arrivare alla fine di esso.

+2

Questo comprenderà '00: 00: 00' del domani; non è chiaro se sia desiderabile. – eggyal

+1

Sì, probabilmente si desidera utilizzare 'where startTime> = now() e startTime

0

Prova questo ::

SELECT * FROM programs where startTime between now() and DATE_SUB(CURDATE(), INTERVAL 1 DAY) 
+0

Questa sintassi non è corretta, è necessario un ulteriore argomento tra '' –

+0

@ErikEkman: Grazie amico per indicando questo –

0

Si potrebbe provare la seguente: Può essere è lungo però.

tabella di esempio:

ID STIME        ETIME 
1 December, 05 2012 05:23:00+0000  December, 05 2012 07:30:00+0000 
2 December, 05 2012 10:23:00+0000  December, 05 2012 12:30:00+0000 
3 December, 06 2012 22:45:00+0000  December, 07 2012 01:00:00+0000 
4 December, 06 2012 22:23:00+0000  December, 06 2012 23:55:00+0000 
5 December, 06 2012 20:23:00+0000  December, 06 2012 22:55:00+0000 
6 December, 07 2012 10:23:00+0000  December, 07 2012 12:30:00+0000 

Query

SELECT *,curtime() FROM prog 
WHERE date(stime) = date(now()) 
AND date(etime) = date(now()) 
AND time_to_sec(SUBTIME(etime,'24:00:00')) >= 0 
; 

Risultati

ID STIME        ETIME 
4 December, 06 2012 22:23:00+0000  December, 06 2012 23:55:00+0000  
5 December, 06 2012 20:23:00+0000  December, 06 2012 22:55:00+0000  
0
SELECT * 
FROM programs 
WHERE DATE(startTime) = CURRENT_DATE AND startTime > CURRENT_TIMESTAMP 
+1

Questo non è molto indicativo - vedi http://stackoverflow.com/a/95256/623041 – eggyal