You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何将SELECT查询按12小时时段拆分获取分时段数据

你可以根据需求选择分开查询或者合并查询两种方案:

方案1:分开两次查询分别获取两个时段数据

时段1:2021-10-24 00:00 ~ 12:00

SELECT 
  py.id, 
  py.external_id, 
  py.created_dt
FROM payment AS py
INNER JOIN services AS sv ON sv.id = py.service_id
INNER JOIN source_types AS st ON st.id = py.source_type_id
INNER JOIN agents AS ag ON ag.id = py.agent_id
INNER JOIN groups AS gr ON gr.id = ag.group_id
WHERE py.created_dt >= '2021-10-24 00:00:00' 
  AND py.created_dt < '2021-10-24 12:00:00'

时段2:2021-10-24 12:00 ~ 次日00:00

SELECT 
  py.id, 
  py.external_id, 
  py.created_dt
FROM payment AS py
INNER JOIN services AS sv ON sv.id = py.service_id
INNER JOIN source_types AS st ON st.id = py.source_type_id
INNER JOIN agents AS ag ON ag.id = py.agent_id
INNER JOIN groups AS gr ON gr.id = ag.group_id
WHERE py.created_dt >= '2021-10-24 12:00:00' 
  AND py.created_dt < '2021-10-25 00:00:00'

方案2:一次查询返回两个时段所有数据(可选附带时段标识)

如果需要同时拿到两个时段的数据,并且标注所属时段,可以用以下语句:

SELECT 
  py.id, 
  py.external_id, 
  py.created_dt,
  CASE 
    WHEN py.created_dt < '2021-10-24 12:00:00' THEN '00:00-12:00'
    ELSE '12:00-24:00'
  END AS time_period
FROM payment AS py
INNER JOIN services AS sv ON sv.id = py.service_id
INNER JOIN source_types AS st ON st.id = py.source_type_id
INNER JOIN agents AS ag ON ag.id = py.agent_id
INNER JOIN groups AS gr ON gr.id = ag.group_id
WHERE py.created_dt >= '2021-10-24' 
  AND py.created_dt < '2021-10-25'

如果不需要时段标识,直接去掉CASE对应的time_period字段即可。

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:48:02