如何获取 mysql 数据库中两个日期之间的状态?

How to get status between two dates in mysql database?

我有一个这样的查询来获取状态而不添加字段。

SELECT * ,
      IF(DATEDIFF(STR_TO_DATE(end_date, "%Y-%m-%d"), CURDATE())<=0,"End","Running") status 
FROM agreements

查询是 运行 但我想添加状态,如果结束日期少于 3 天,则状态将显示 "will be ended"

所以查询中会有3个状态,END,运行,会是END

您可以使用CASE ..WHEN statements; also your STR_TO_DATE(end, '%Y-%m-%d') usage is unnecessary because DATEDIFF()函数只考虑日期部分进行计算:

SELECT * ,
       CASE WHEN DATEDIFF(end_date, CURDATE()) <= 0 THEN 'End' 
            WHEN DATEDIFF(end_date, CURDATE()) < 3 THEN 'Will Be End' 
            ELSE 'Running'
       END status
FROM agreements