2

我在数据库中有 2 个日期,如下所示:

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

我想搜索 和 之间的所有from_dateTime记录to_dateTime。我尝试在mysql中使用以下代码:

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

但它并没有像我预期的那样工作。为什么我得到空的结果集?

更新:

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()2013-06-12 08:17:13和命令也找不到我的记录。

4

4 回答 4

3

问题是您正在比较日期和日期时间。日期从午夜开始。任何时间分量都大于相应的日期。尝试这个:

SELECT *
FROM users u
WHERE date(NOW()) between u.from_dateTime AND u.to_dateTime 
于 2013-06-12T04:51:43.997 回答
1
SELECT * 
FROM users i 
WHERE cast(NOW() as date) 
      between i.from_dateTime AND i.to_dateTime

SQL 小提琴

于 2013-06-12T04:55:06.300 回答
0

之间使用

SELECT * FROM users u where date(NOW()) between u.from_dateTime and u.to_dateTime 
于 2013-06-12T04:57:46.720 回答
0
select from table_name where datetime_column >= '2013-06-11' and datetime_column <= '2013-06-12'
于 2013-06-12T04:55:38.897 回答