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

如何在QuestDB中查询上月每日15:30前的最新价格?

实现每日15:30前最新股票价格查询的方案

核心思路

按股票代码(symbol)和日期分组,筛选出每日美国东部时间15:30之前的交易记录,再取每组内时间最晚的那条记录的价格,即为当日15:30前的最新价格。

查询语句

假设你的timestamp字段存储的是UTC时间,先转换为美国东部时间(自动适配夏令时/冬令时),再执行筛选与分组:

SELECT
    symbol,
    DATE_TRUNC('day', timestamp AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York') AS trade_date,
    LAST(price) AS latest_price_before_1530,
    LAST(timestamp) AS latest_record_time
FROM trades
WHERE
    -- 锁定上月数据范围
    timestamp >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month')
    AND timestamp < DATE_TRUNC('month', CURRENT_DATE)
    -- 筛选EST时间15:30前的记录
    AND (timestamp AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York')::TIME <= '15:30:00'
GROUP BY symbol, trade_date
ORDER BY symbol, trade_date;

关键说明

  1. 时区转换:timestamp AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York' 会自动处理EDT(夏令时,UTC-4)和EST(冬令时,UTC-5)的切换,无需手动调整时差。
  2. 上月数据筛选:通过DATE_TRUNC函数精准定位上月的时间区间,避免跨月数据干扰。
  3. 取最新价格:LAST(price)函数会在分组内按时间顺序取最后一条记录的价格,确保是当日15:30前的最新成交价。

特殊情况适配

如果你的timestamp字段本身存储的就是美国东部时间,可直接简化筛选条件:

AND timestamp::TIME <= '15:30:00'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:14:53