2017-11-16 18 views
1

と比較するためにMySQLの中で、今日一日の終わりを取得します。私はこのクエリを持って

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

そしてEndDateの値は2017-11-16 00:00:00のようなものです:

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 

さて問題は、この行です。これで、この値に基づいてExpiredが返されますが、NOW() = 2017-11-16 23:59:59の後にはExpiredが返されます。

答えて

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 
関連する問題