2

I have 2 dates in database like this:

from_dateTime = 2013-06-12
to_dateTime   = 2013-07-10

I want to search all records between from_dateTime and to_dateTime. I tried to use following code in mysql:

SELECT *
FROM users i
WHERE i.from_dateTime >= '2013-06-12' AND i.to_dateTime <= '2013-07-10'

But it doesn't work as I expected. Why am I getting empty result set?

UPDATE:

from_dateTime = 2013-06-11
to_dateTime   = 2013-06-12

SQL:

SELECT * FROM users i WHERE  NOW() between i.from_dateTime AND i.to_dateTime 

NOW() is 2013-06-12 08:17:13 and command cant find my record too.

Prahalad Gaggar
  • 11,389
  • 16
  • 53
  • 71

4 Answers4

3

The problem is that you are comparing dates and datetimes. Dates start at midnight. Any time component is larger than the corresponding date. Try this:

SELECT *
FROM users u
WHERE date(NOW()) between u.from_dateTime AND u.to_dateTime 
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786
1
SELECT * 
FROM users i 
WHERE cast(NOW() as date) 
      between i.from_dateTime AND i.to_dateTime

SQL FIDDLE

Prahalad Gaggar
  • 11,389
  • 16
  • 53
  • 71
0
select from table_name where datetime_column >= '2013-06-11' and datetime_column <= '2013-06-12'
Prahalad Gaggar
  • 11,389
  • 16
  • 53
  • 71
Jayram
  • 18,820
  • 6
  • 51
  • 68
0

Use between

SELECT * FROM users u where date(NOW()) between u.from_dateTime and u.to_dateTime 
Prahalad Gaggar
  • 11,389
  • 16
  • 53
  • 71
Bhuvnesh Gupta
  • 197
  • 2
  • 12