Python 在Sql中,按日期和同一日期中的两个不同时间分组

Python 在Sql中,按日期和同一日期中的两个不同时间分组,python,sql,postgresql,datetime,where-clause,Python,Sql,Postgresql,Datetime,Where Clause,我想从我的数据库中选择 在截止日期和同一日期的两个不同时间之间 但当我在其中一个变量中使用总和时,它会给我一个错误的结果 我认为问题在小组里 这是我的例子 date_0 = str(self.dateEdit_49.text()) date_1 = str(self.dateEdit_47.text()) selected_day = self.dateEdit_49.date() last_day = selected_day.addDays

我想从我的数据库中选择

在截止日期和同一日期的两个不同时间之间

但当我在其中一个变量中使用总和时,它会给我一个错误的结果

我认为问题在小组里

这是我的例子

date_0 = str(self.dateEdit_49.text())
        date_1 = str(self.dateEdit_47.text()) 

        selected_day = self.dateEdit_49.date()
        last_day = selected_day.addDays(-1)
        last_day_str = last_day.toString(self.dateEdit_49.displayFormat())

'''SELECT date_d, SUM(montant) FROM transactions 
WHERE (date_d, time_d) > (%s::date, '16:00:00'::time) 
AND (date_d, time_d) < (%s::date, '16:00:00'::time) 
GROUP BY (date_d)''',(last_day_str, date_1))
我如何将结果与日期分组,但日期与您想要的图像类似:

SELECT date_d, SUM(montant) 
FROM transactions 
WHERE date_d + time_d > %s::date + '16:00:00'::time
  AND date_d + time_d < %s::date + '16:00:00'::time
GROUP BY date_d
如果要生成从下午4点开始到第二天下午4点的行组,那么我们可以偏移日期。子查询在这方面很方便:

SELECT new_dt, SUM(montant) 
FROM (
    SELECT t.*, date_d + time_d - interval '16 hour' new_dt 
    FROM transactions t
) t
WHERE new_dt > %s::date
  AND new_dt < %s::date
GROUP BY new_dt