postgresql - 带有年份和周数的 Postgresql 日期范围查询
问题描述
嗨,我想将给定一周的工作时间数存储在一个带有小时、年、周的表格中
所以我可以快速汇总一周的小时数,其中 week 是 ISO 周数。
然后我想在这个表上做一个日期范围过滤查询,比如说
从 2018 年 12 月 24 日到 2019 年 1 月 21 日(2018 年第 52 周到 2019 年第 4 周)。
如果用户通过年和周,那么我需要对复合索引进行范围检查,您首先比较年值,然后是周数。
我应该如何构造查询和索引以有效地检索此范围内的记录?
这是一个基本的尝试,给定开始年份和开始周,以及结束年份和结束周:
select year, week, hours
from
weekly hours
where((year = 2018 and week >= 52) OR year > 2018) AND
((year = 2019 and week <=3) OR year < 2019)
解决方案
<=
您可以使用or运算符比较多个列>=
:
select *
from weekly_hours
where (year, week) >= (2018,52)
and (year, week) <= (2019,3);
该查询可以使用两列上的索引,例如
create index on weekly_hours (year, week);
推荐阅读
- elixir - 牛仔服务器在启动时退出而没有错误
- algorithm - 根据“语法”或“上下文”相关性确定短语的“优点”
- python-3.x - 将 pandas Pivittable 导出到 excel 并进行聚合
- org-mode - 如何只导出代码块的结果而不是生成它的代码
- postgresql - jdbcTemplate 查询仅使用 SELECT * 执行
- csvhelper - *阅读*具有不同格式的多个部分的 CSV 文件的最佳实践
- sql-server - 用以前的记录值更新最新记录
- javascript - Switch 语句返回不正确的值
- go - 如何确认来自 Go 客户端的 gRPC 流量是 TLS 加密的
- python - 从谷歌驱动器获取 CSV,然后加载到熊猫