SQL Query未基于BETWEEN条件运行

时间:2014-07-14 03:11:17

标签: mysql database mysql-5.5

我有以下SQL查询:

SELECT Count(*)

FROM   MyDB.mytable

WHERE date_dt BETWEEN '2013-12-09 00:00:00' AND '2013-12-09 23:59:59'

;

当我运行上面的查询时,我会计算表中显示结果的记录。出于某种原因,它忽略了我所包含的BETWEEN条件。最后,我必须使用DELETE代替SELECT,我会做类似以下的事情:

DELETE  FROM MyDB.mytable
WHERE date_dt BETWEEN '2013-12-09 00:00:00' AND '2014-12-09 23:59:59'
;

如果我使用DELETE,我会不小心删除了我桌子上的所有记录。请让我知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

看起来您正在尝试获取一天的记录(2014-12-09),但您的代码显示最近366天。可能是我错了,但看起来你想要:

 DELETE  FROM MyDB.mytable
  WHERE date_dt BETWEEN '2014-12-09 00:00:00' AND '2014-12-09 23:59:59'
  ;

否则我的查询不会有任何问题。

答案 1 :(得分:0)

MySQL文档说:

"为了在将BETWEEN与日期或时间值一起使用时获得最佳结果,请使用CAST()将值显式转换为所需的数据类型。示例:如果将DATETIME与两个DATE值进行比较,请将DATE值转换为DATETIME值。如果你使用字符串常量,例如' 2001-1-1'在与DATE的比较中,将字符串转换为DATE。"

值得一试。

SELECT Count(*)
FROM   MyDB.mytable
WHERE date_dt BETWEEN CAST('2013-12-09 00:00:00' AS DATETIME) 
AND CAST('2014-12-09 23:59:59' AS DATETIME);