找到存储为varchar的两个日期时间列之间的时差

时间:2013-08-28 18:05:00

标签: php mysql date timestamp

我有一个名为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'之间记录的结果

2 个答案:

答案 0 :(得分: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并修复代码。

答案 1 :(得分: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')