如何比较日期存储为varchar的日期

时间:2015-03-10 16:59:28

标签: mysql

由于首次构建日期,我数据库中的日期存储为varchars而不是日期格式。

日期如下: 例如 1/3/2015 和 的 2015年10月3日

我正在尝试:

"SELECT COUNT(*) n FROM tracker WHERE TIMESTAMP(STR_TO_DATE(date, '%d/%m/%Y'))<=NOW()"

然而,这不起作用。无论日期如何,它都会返回所有记录的计数。

我如何只计算今天或过去日期的记录?

2 个答案:

答案 0 :(得分:1)

您不需要TIMESTAMP()

SELECT COUNT(*) as n
FROM tracker
WHERE STR_TO_DATE(date, '%d/%m/%Y') <= NOW()

答案 1 :(得分:0)

你应该注意STR_TO_DATE和NOW()的功能,第一个返回一个日期,第二个是时间戳。 当您转换STR_TO_DATE(日期,'%d /%m /%Y')时,您将获得一个小时,分钟和秒为00:00:00的日期

使用CURRENT_DATE可能会更符合原始要求

SELECT COUNT(*) as n 
FROM tracker
WHERE STR_TO_DATE(date, '%d/%m/%Y') <= CURRENT_DATE

另外,我建议您重命名“日期”列