我正在尝试在Postgresql中按自定义日期将总和结果分组。由于常规时间从00:00开始,我希望我的时间从04:00开始,因此如果有时间输入2019-01-03 02:23,它将计入'2019-01-02'中。
现在,我的代码如下所示:底部部分在日期类型00:00-23.59上可以完美运行,但是我想按上面创建的上限范围对其进行分组。我只是不知道如何连接这两个部分。
with dateRange as(
SELECT
generate_series(
MIN(to_date(payments2.paymenttime,'DD Mon YYYY')) + interval '4 hour',
max(to_date(payments2.paymenttime,'DD Mon YYYY')),
'24 hour') as theday
from payments2
)
select
sum(cast(payments2.servicecharge as money)) as total,
to_date(payments2.paymenttime,'DD Mon YYYY') as date
from payments2
group by date
这样的结果
+------------+------------+
| total | date |
+------------+------------+
| 20 | 2019-01-01 |
+------------+------------+
| 60 | 2019-01-02 |
+------------+------------+
| 35 | 2019-01-03 |
+------------+------------+
| 21 | 2019-01-04 |
+------------+------------+
非常感谢您的帮助。
类似
select
sum(cast(payments2.servicecharge as money)) as total,
(to_timestamp(payments2.paymenttime,'DD Mon YYYY HH24:MI:SS') - interval '4 hours')::date as date
from payments2
group by date
根据to_timestamp
字符串的格式,[您可能需要在payments2.paymenttime
功能中使用其他格式