0

我有以下 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,我会不小心删除表中的所有记录。请让我知道我做错了什么。

4

2 回答 2

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'
  ;

否则我看不出你的查询有什么问题。

于 2014-07-14T03:22:27.840 回答
0

MySQL 文档说:

“为了在将 BETWEEN 与日期或时间值一起使用时获得最佳结果,请使用 CAST() 将值显式转换为所需的数据类型。示例:如果将 DATETIME 与两个 DATE 值进行比较,请将 DATE 值转换为 DATETIME 值。如果您在与 DATE 进行比较时使用字符串常量(例如 '2001-1-1'),将字符串转换为 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);
于 2014-07-14T03:33:35.560 回答