1

date_created我有一个名为我在 VARCHAR 中存储日期时间值的表列,例如16-06-2013 10:49:29

我想在两个日期之间通过 mysql 查询获得结果。我正在使用这样的查询:

... WHERE date_created BETWEEN '06-08-2013 22:30:18' AND '28-08-2013 22:30:22' ...

此查询返回结果,但该结果还包括between 06 and 28每个月的较旧日期记录。我也使用 < 和 > 但这些也没有用。

如何获得仅包含“06-08-2013 22:30:18”和“28-08-2013 22:30:22”之间记录的结果

4

2 回答 2

7

您可以使用 MySQL 函数 STR_TO_DATE 将字符串格式化为 DATETIME。

SELECT STR_TO_DATE('06-08-2013 22:30:18', '%d-%m-%Y %H:%i:%s');
# 2013-08-06 22:30:18

我建议使用单个 UPDATE 将所有 VARCHAR 重新格式化为 DATETIME 并修复代码。

于 2013-08-28T18:10:53.497 回答
1

您需要使用该STR_TO_DATE函数将日期字符串转换为可用于比较的日期。

STR_TO_DATE(date_created, '%d-%m-%Y %H:%i:%s') BETWEEN STR_TO_DATE('06-08-2013 22:30:18', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('28-08-2013 22:30:22', '%d-%m-%Y %H:%i:%s')
于 2013-08-28T18:14:17.370 回答