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

Muh*_*riq 1 php mysql timestamp date

我有一个表列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' ...
Run Code Online (Sandbox Code Playgroud)

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

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

Nik*_*nen 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
Run Code Online (Sandbox Code Playgroud)

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

  • UPDATE ... SET date_created = STR_TO_DATE(date_created,'%d-%m-%Y%H:%i:%s')此后将列更改为DATETIME (2认同)