PostgreSQL里查询本周数据汇总

原SQL:

1
2
3
4
5
6
SELECT
    SUM(amount) AS all_amount
FROM amount_table
WHERE
    date_part('week', now()) = date_part('week', create_date)
    AND date_part('year', now()) = date_part('year', create_date)

优化后

1
2
3
4
5
SELECT
    SUM(amount) AS all_amount
FROM amount_table
WHERE
    create_date>=date_trunc('week', now())

先计算开始时间、结束时间,替代年、月、日、周的比较。

同样去年,今年,昨日,上月都可以用这个方法查询。

date_trunc:用于计算时间在当前周期里的开始时间,第一个参数:周期,第二个参数:要计算的时间。