14

I have query like below

SELECT * FROM programs where startTime between now() and now() + INTERVAL 1 DAY;

Is it possible to write query with time between now and midnight of today in MySQL?

Something like below

SELECT * FROM programs where startTime between now() and now() + midnight 12;
Justin John
  • 9,223
  • 14
  • 70
  • 129

5 Answers5

18

I suggest you always use clopen (closed-open) intervals for dates and times comparisons. BETWEEN means closed intervals (from both sides). A very good explanation is in @Aaron Bertrand's blog post: What do BETWEEN and the devil have in common?. Here's a way to write the query:

SELECT * 
FROM programs 
WHERE startTime >= NOW() 
  AND startTime < CURRENT_DATE() + INTERVAL 1 DAY ;
Community
  • 1
  • 1
ypercubeᵀᴹ
  • 113,259
  • 19
  • 174
  • 235
5
SELECT * FROM programs where startTime between now() and CURRENT_DATE() + INTERVAL 1 DAY;

Current date returns the beginning of the day, then we add 1 day to get to the end of it.

Erik Ekman
  • 2,051
  • 12
  • 13
0

Try this ::

SELECT * FROM programs where startTime between now() and DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Sashi Kant
  • 13,277
  • 9
  • 44
  • 71
0

You could try the following: May be it's long though.

Sample Table:

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
;

Results

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     
bonCodigo
  • 14,268
  • 1
  • 48
  • 91
0
SELECT *
FROM   programs
WHERE  DATE(startTime) = CURRENT_DATE AND startTime > CURRENT_TIMESTAMP
eggyal
  • 122,705
  • 18
  • 212
  • 237