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

如何在PostgreSQL中过滤含秒/亚秒的timestamp with timezone记录

解决方案

方法1:匹配15分钟区间起始时刻

你的表存储的是15分钟OHLC数据,合法记录的dt应该是每个15分钟区间的起始时间点(秒、亚秒均为0)。可以用DATE_TRUNC将时间截断到15分钟粒度,判断截断后的时间是否与原dt完全相等:

SELECT *
FROM stock_price_15m
WHERE DATE_TRUNC('15 minutes', dt) = dt
-- 可追加其他筛选条件
AND date(dt) = '2022-12-22' AND stock_id = 7
ORDER BY dt;

这个方法直接验证dt是否为15分钟整点起始时间,自动过滤所有带秒/亚秒偏移的记录。

方法2:直接检查秒和亚秒是否为0

如果仅需过滤含秒/亚秒的记录(不严格限制15分钟间隔),可以用EXTRACT提取时间的秒和微秒部分,判断是否均为0:

SELECT *
FROM stock_price_15m
WHERE EXTRACT(SECOND FROM dt) = 0
AND EXTRACT(MICROSECOND FROM dt) = 0
AND date(dt) = '2022-12-22' AND stock_id = 7
ORDER BY dt;

关于to_char失效的原因

如果之前用to_char尝试过滤却失败,大概率是没考虑时区影响,或是格式字符串未覆盖亚秒部分——即使to_char不显示亚秒,原时间的亚秒数据依然存在,导致匹配逻辑失效。上面两种方法直接操作时间字段的数值属性,可靠性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:45:29