SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9) AND date BETWEEN '2013-05-22' AND '2013-05-22'
以上查询无效,显示空行选择
但下面的内容正在发挥作用
SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9)
答案 0 :(得分:3)
BETWEEN '2013-05-22' AND '2013-05-22'
如果您有datetime
列,则转换为
BETWEEN '2013-05-22 00:00:00' AND '2013-05-22 00:00:00'
我想你想要
BETWEEN '2013-05-22' AND '2013-05-23'
...假设您确实拥有日期为2013-05-22
且只需要一天的记录。
答案 1 :(得分:1)
就个人而言,我喜欢使用datediff函数:
SELECT * FROM schedule_backup WHERE shift_id IN (2, 7, 9) AND
DATEDIFF(date,'1/1/2013') = 0
对于你正在做的事情来说,它更加明显,并且你不会在一天结束时意外地吸引另一天或排除记录,因为between
运营商会这样做。
另一种选择是简单地转换到日期:
CAST(dateField AS date)
编辑:修改为MySQL语法。
答案 2 :(得分:0)
BETWEEN '2013-05-22' AND '2013-05-22'
- 这就像获取0到0之间的数字一样。如果是同一天,请将其更改为两个不同的日期或两个不同的日期。