在PostgreSQL中使用DATE_TRUNC计算一周的结束日期

时间:2019-10-11 03:25:42

标签: sql postgresql date

有没有一种方法可以将显示日期更改为每周的末尾而不是一周的开始。

这是我的代码:

SELECT date_trunc('week', day + '1 day'::interval)::date - '1 day'::interval  AS anchor, AVG(value) AS average
FROM daily_metrics
WHERE metric = 'daily-active-users'
GROUP BY anchor
ORDER BY anchor

结果如下: enter image description here

我想要实现的是使其成为2018-03-03(自定义周的开始)而不是2018-02-25(自定义周的开始),而不是2018-03-10 2018-03-04 ...

2 个答案:

答案 0 :(得分:1)

您的来回移动一天的技巧可以让您开始自定义周。您可以通过添加 5 而不是减去 1

来结束或自定义周(星期六)
SELECT date_trunc('week', day + interval '1 day')::date + 5 AS anchor ...

integer上添加date,表示天数。

相关:

答案 1 :(得分:0)

只需尝试

SELECT date_trunc('week', day::DATE + 1)::date + 5 AS anchor, AVG(value) AS average
FROM daily_metrics
WHERE metric = 'daily-active-users'
GROUP BY anchor
ORDER BY anchor

当日期是一周的开始日期加上6(1 + 5)天时,该日期将移动到一周的最后一个日期。增加一个是将星期日移至下周,而增加5个则将星期日从开始日期移至该周结束。

请注意,PostgreSQL允许在日期中添加整数(=天)。