如何在PostgreSQL中选择最近30天内的日期?

how to select within last 30 days from date in postgresql?

提问人:ERJAN 提问时间:10/28/2023 最后编辑:ERJAN 更新时间:10/28/2023 访问量:36

问:

SQL表有出租车司机的数据,列是:

id  integer
client_id   integer (Foreign keyed to events.rider_id)
driver_id   integer
city_id integer (Foreign keyed to cities.city_id)
client_rating   integer
driver_rating   integer
predicted_eta   integer
actual_eta  integer
first_completed_date Timestamp ,
status  Enum(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)

如何计算过去 30 天内所有已完成行程的实际预计到达时间与预测预计到达时间之间的第 90 个百分位差?

select

  percentile_cont(0.90) within group (order by actual_eta-predicted_eta) as percentile_90_diff

from trips t where status='completed'

and first_completed_date > (first_completed_date - INTERVAL '30 DAY')::DATE

我关心的是过去 30 天内的最后一部分 - first_completed_date >。 从first_completed_date开始计算过去 30 天的正确方法是否正确?

PostgreSQL 日期 时间戳

评论

0赞 Marth 10/28/2023
您提供的架构中没有。而且永远是真的,你的意思是吗?first_completed_dated > (d - '30 days')d > (CURRENT_DATE - '30 days')
0赞 ERJAN 10/28/2023
@Marth,对不起,编辑了它。我不知道 Postgre 如何计算从特定日期列开始的过去 30 天。

答:

2赞 agamil 10/28/2023 #1

您将“first_completed_date”与自身进行比较,但是,需要将其与当前日期减去 30 天进行比较

first_completed_date > NOW() - INTERVAL '30 DAY';