2017-07-02 49 views
1

我想要得到的日期是小于今天或MySQL数据库截止日期,问题是日期字段类型是varchar,我的代码是低于我能得到更少比日期,但不包括年,我需要月/日/年作为输出,我没有拥有数据库我只有一个只读连接,只能使这种类型的查询,我使用PHP。获取日期类型是varchar的Mysql

//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年7月3日

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

看着我的输出就设法得到了截止日期,但只有一个月,一些日期仍然有效或到期明年,任何建议都会很棒!提前致谢!

+0

这不是问题。只需更改日期列的数据类型 – Strawberry

+0

我的一个问题是我无法更改数据库的数据类型,我只被授予只读访问权限,主开发人员也无法公开更改其实际的可悲性。 – KaoriYui

+0

尽快摆脱这种情况 – Strawberry

回答

1

转换为常规日期,只是使用数据库的比较:

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

没有必要在当前的日期通过从应用程序 - 除非你明确知道的问题与时区。

永远不要将日期作为字符串进行比较。那么,如果你需要,确保你使用ISO格式YYYY-MM-DD(有或没有连字符)。

+0

这工作得很好!非常感谢! – KaoriYui

+0

请注意,此查询不能使用索引,所以它非常可怕 – Strawberry

+0

@Strawberry。 。 。在这种情况下,可以自由回答查询,而不是*可以使用索引。 –