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