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)
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
并且只想要一天。
就个人而言,我喜欢使用 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 语法。
BETWEEN '2013-05-22' AND '2013-05-22'
- 这类似于获取 0 和 0 之间的数字。如果是同一天,请将其更改为两个不同的日期或两个不同的时间。