1
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)
4

3 回答 3

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并且只想要一天。

于 2013-05-20T19:57:37.657 回答
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 语法。

于 2013-05-20T20:19:46.187 回答
0

BETWEEN '2013-05-22' AND '2013-05-22'- 这类似于获取 0 和 0 之间的数字。如果是同一天,请将其更改为两个不同的日期或两个不同的时间。

于 2013-05-20T19:59:47.157 回答