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

PostgreSQL中筛选PST时区20:00-21:00的epoch时间戳

解决PostgreSQL中筛选PST时区20:00-21:00记录的问题

你之前的SQL只判断了小时大于20,这会误把21点及以后的记录也包含进来,我们需要精准锁定20:00到21:00之间(含20:00、不含21:00)的时间段。这里提供两种实用的解决方案:

方法一:直接对比时间部分

把epoch时间转换为PST时区的完整时间后,提取其time类型的时分秒部分,再和目标时间范围做对比:

SELECT created_at
FROM your_table
WHERE (to_timestamp(created_at) AT TIME ZONE 'America/Los_angeles')::time BETWEEN '20:00:00' AND '20:59:59';

这种写法直观易懂,::time会剥离日期和时区信息,只保留时分秒,BETWEEN能精准框定20点整到20点59分59秒的区间。

方法二:用Extract函数精准判断小时

如果你更习惯用extract函数,可以直接指定小时为20——因为只要小时是20,就意味着时间处于20:00-20:59:59之间,刚好符合需求:

SELECT created_at
FROM your_table
WHERE 
  EXTRACT(hour FROM to_timestamp(created_at) AT TIME ZONE 'America/Los_angeles') = 20;

验证你提供的示例数据:

  • 1526528788转换为PST是2018-05-16 20:06:28,符合条件;
  • 1526442388转换为PST是2018-05-15 20:06:28,也符合条件;
    其余记录转换后的小时不在20范围内,不会被选中,和你的期望结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:59