由于首次构建日期,我数据库中的日期存储为varchars而不是日期格式。
日期如下: 例如 1/3/2015 和 的 2015年10月3日
我正在尝试:
"SELECT COUNT(*) n FROM tracker WHERE TIMESTAMP(STR_TO_DATE(date, '%d/%m/%Y'))<=NOW()"
然而,这不起作用。无论日期如何,它都会返回所有记录的计数。
我如何只计算今天或过去日期的记录?
答案 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
另外,我建议您重命名“日期”列