sql - postgres 基于多个日期值的排序

标签 sql postgresql select sql-order-by

我有一个项目表,其中项目的列为 start_at(日期)end_at(日期)pauzed_at(日期)等。 我想根据日期值对项目进行排序。

排序应该是;

- STARTED projects
- PAUZED projects
- IDLE projects 
- ENDED projects

当日期在 start_atend_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/

相关文章:

mysql - SQL 查询多次检索同一行

sql - 如何在 MySQL 中获取下一条/上一条记录?

php - XAMPP 与 PostgreSQL 9

postgresql - 我应该使用分片吗?

c# - 批量 C# 数据表到 postgresql 表

mysql - 按日期+其他字段对多个字段求和和分组

sql - 加入一对多并检索单个结果

php - 根据php变量插入表列

ios - UITableViewCell 突出显示颜色永远不会点击外部链接

MySQL 查询返回当前结果的时间总和