python - 在Sql中按日期和同一日期的两个不同时间分组
问题描述
我想从我的数据库中选择数据
BETWEEN to date 和同一日期的两个不同时间
但是当我在其中一个变体中使用 Sum 时,它给了我一个错误的结果
我认为问题出在组中
这是我的例子
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
推荐阅读
- android - 如何从字符串值中获取纬度?
- python - 将变量从 views.py 传递到 forms.py 会导致表单提交时出错
- c - GCC 无法编译 libcurl 示例:“CURLINFO_TOTAL_TIME_T”未声明
- intellij-idea - 如何在本地运行 intellij 的 cucumber-java 插件
- mongodb - 我们可以在 atlas 500mb 沙箱中存储多少数据?
- php - 从 URL 导入视频并直接传递给访问者以供下载
- angular - Angular 6 依赖注入(在 module.ts 中)
- javascript - Laravel 使用 ajax 进行动态下拉
- monitoring - 普罗米修斯吃最后一位小数为零
- javascript - 在 VueJS 2 中使用 v-for 第二个参数突出显示 index 和 index+1