Mysql获取类型为varchar的失效日期

时间:2017-07-02 22:40:04

标签: php mysql sql date

我试图在mysql数据库上获取比今天或截止日期更短的日期,问题是日期字段类型是varchar,我的代码在下面我能够得到少于日期但不包括年份,我需要月/日/年作为输出,我不拥有数据库我只有一个只读连接,只能进行这种类型的查询,我使用PHP。

//i did now include the whole query code below is my query string.

$now = date('m/d/Y');

$sql = "SELECT * FROM todos WHERE DATE(due_date) < '$now'";

//other query here.

我的输出低于今天的日期是2017年3月7日

06/02/2018
05/13/2016
05/23/2017
04/15/2015
04/24/2019

查看我的输出它设法得到截止日期,但只是按月,有些日期仍然有效或到期是明年,任何建议都会很棒!提前谢谢!

1 个答案:

答案 0 :(得分:1)

转换为常规日期,只需使用数据库进行比较:

SELECT *
FROM todos 
WHERE str_to_date(due_date, '%m/%d/%Y') < curdate();

除非您特别了解时区问题,否则无需从申请中传递当前日期。

绝不将日期作为字符串进行比较。好吧,如果必须,请确保使用ISO格式YYYY-MM-DD(带或不带连字符)。