我有一个日期列,其中包含日期值或null。我用它来保存产品的到期日期。我想编写一个查询来按以下顺序获取它们:尚未过期,没有过期(空),并且已经过期。

例如,假设今天是5月15日:

prd_id   prd_name   Expiry Date
-----------------
1    name1         May 16
2    name2         May 17
3    name3         May 18
4    name4         May 21
5    namex         null
6    namex         null
7    namex         null
8    namex         May 14
9    namex         May 12


(空值表示没有到期)

我该怎么做?

最佳答案

您可以尝试以下语法:

SELECT *
FROM YOUR_TABLE
ORDER BY CASE WHEN expire_date > CURDATE() THEN 1 END,
WHEN expire_date IS NULL THEN 2 Desc END,
WHEN expire_date < CURDATE() THEN 3 Desc END;

关于php - MySQL中日期的混合排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29943188/

10-10 10:20