2017-07-18 961 views
-4

我在mysql数据库表中调用日期的字段是以d-m-y格式存储日期的。Sql语句来查找日期小于今天日期的记录的计数

我正在查找一个sql语句来查找小于或等于今天日期的所有日期的计数。例如,如果今天的日期是18-07-2017 ,并且我们在日期表中记录了诸如17-07-2017,18-07-2017,19-07-2017等日期,则sql语句应输出2.

有人可以帮忙。

+3

你为什么将它们存储为字符串,而不是作为' DATE'或'DATETIME'? – Barmar

+1

这是非常基本的SQL;你有尝试过什么吗? – mustaccio

+0

使用'STR_TO_DATE'将字符串转换为日期。然后你可以用'TODAY()'比较它们。 – Barmar

回答

1

值转换为一个日期并进行比较:

select count(*) 
from t 
where str_to_date(stupid_date_column, '%d-%m-%Y') <= curdate(); 

然后解决您的表,这样的日期被正确地存储:

update t 
    set stupid_date_column = date_format(str_to_date(stupid_date_column, '%d-%m-%Y'), '%Y-%m-%d'); 

alter table t modify stupid_date_column date; 
+0

这一个工程!谢谢 – Lenny