今天结束一天的MySQL比较

时间:2017-11-16 09:01:34

标签: mysql sql datetime mariadb

我有这个问题:

CASE 
WHEN NOW() < `Rank`.`StartDate` THEN "Pending" 
WHEN NOW() > `Rank`.`StartDate` && NOW() < `Rank`.`EndDate` THEN "Active" 
WHEN NOW() > `Rank`.`EndDate` THEN "Expired" 
ELSE "Invalid"
END

现在问题在于这一行:

WHEN NOW() > `Rank`.`EndDate` THEN "Expired" 

EndDate的值与2017-11-16 00:00:00类似。现在,这将基于此值返回Expired,但我如何编写它,它将在Expired = NOW()之后返回2017-11-16 23:59:59

1 个答案:

答案 0 :(得分:3)

您可以使用date功能仅比较日期部分并忽略一天中的时间:

CASE 
WHEN DATE(NOW()) < `Rank`.`StartDate`
     THEN "Pending" 
WHEN DATE(NOW()) >= `Rank`.`StartDate` && DATE(NOW()) <= `Rank`.`EndDate` 
     THEN "Active" 
WHEN DATE(NOW()) > `Rank`.`EndDate`
     THEN "Expired" 
ELSE "Invalid"
END