我有以下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
,我会不小心删除了我桌子上的所有记录。请让我知道我做错了什么。
答案 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);