PostgreSQL 根据日期范围之间的天数对记录进行排序

PostgreSQL Order the records bases on number of days between the date range

提问人:Thejas 提问时间:11/10/2023 最后编辑:Thejas 更新时间:11/12/2023 访问量:67

问:

我想根据 2 列之间的天数从数据库中获取记录,数据库列中的数据类型是没有时区的时间戳(示例格式 2023-04-05 04:00:00)。我们用于排序。它按预期工作 1 个日期列,但我无法设置日期范围。org.springframewrk.data.domain.Sort

例如,如果我有 2023-04-05 04:00:00 和 2023-04-08 04:00:00,那么结果应该是 3 。由于两个日期范围之间的天数为 3

排序前

opendate               closedate            number of days
2023-04-05 04:00:00   2023-04-06 04:00:00       1
2023-04-05 04:00:00   2023-04-05 04:00:00       0
2023-04-05 04:00:00   2023-04-07 04:00:00       2
2023-04-05 04:00:00   2023-04-05 04:00:00       0
2023-04-05 04:00:00   2023-04-08 04:00:00       3

分类后

opendate               closedate            number of days
2023-04-05 04:00:00   2023-04-05 04:00:00       0
2023-04-05 04:00:00   2023-04-05 04:00:00       0
2023-04-05 04:00:00   2023-04-06 04:00:00       1
2023-04-05 04:00:00   2023-04-07 04:00:00       2
2023-04-05 04:00:00   2023-04-08 04:00:00       3

我想设置以下顺序,即

 select * from table order by (date(closedDate)-date(openDate)) desc ;

上面的查询给出了预期的结果,但我想使用排序函数实现相同的结果,即

我正在使用

    import org.springframewrk.data.domain.*;

    Sort sort=Sort.by(openDate).descending();
  Pageable paging=PageRequest.of(1,10,sort);

我想要这样的东西

 Sort sort=Sort.by(closedDate-openDate).descending();

是否可以使用 Sort 函数执行此操作

Spring PostgreSQL 排序 psql

评论

0赞 Adrian Klaver 11/10/2023
在您的问题文本中添加:1) 和 或 的实际类型是什么?2) 如果 then 将产生一个 .如果这样,它将产生一个 .3) 提供(以文本形式)输入数据样本和预期输出样本。datecolumnm1datecolumn2datetimestamp(tz)datedatecolumn1-datecolumn2integertimestamp(tz)interval
0赞 Thejas 11/10/2023
@AdrianKlaver更新了问题的格式。示例格式为 (2023/04/05)
0赞 Adrian Klaver 11/11/2023
这不是我问的。我们需要知道的是所涉及的列的数据类型是什么?这没有任何意义,因为这不是数据的存储方式。此外,您尚未提供输入数据以及您期望的输出。2023/04/05
0赞 Thejas 11/11/2023
@AdrianKlaver 在数据库中,列日期类型为不带时区的时间戳
1赞 Adrian Klaver 11/13/2023
正如我在之前的评论中提到的,您需要通过将值转换为日期来在 Spring 代码中复制它。我不使用 Spring,所以这是你需要查找的东西,否则其他人需要提供答案。

答: 暂无答案