我有一个项目表,其中项目的列为 start_at
(日期)end_at
(日期)pauzed_at(日期)等。
我想根据日期值对项目进行排序。
排序应该是;
- STARTED projects
- PAUZED projects
- IDLE projects
- ENDED projects
当日期在 start_at
和 end_at
之间时,项目开始。
未达到 start_at 日期时项目处于空闲状态。
到达 end_at 日期时项目结束。
当设置了paused_at等时,项目暂停。
如何根据项目的状态对该表进行排序?
最佳答案
状态可以用 case
表达式表示:
SELECT *
FROM projects
ORDER BY CASE WHEN paused_at IS NOT NULL THEN 2 -- paused
WHEN ended_at() < NOW() THEN 4 -- ended
WHEN started_at() > NOW() THEN 3 -- idle
ELSE 1 -- started
END ASC
关于sql - postgres 基于多个日期值的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213638/