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

如何从表A中查询处于表B时间区间内的timestamp数据?

解决方案

根据你的表结构和需求,这里分两种常见场景给出SQL查询方案:


场景1:表B的open_minute/close_minute是当天的分钟偏移量

比如open_minute=90代表当天01:30,close_minute=180代表当天03:00,这类场景需要先把表A的timestamp转换为当天的分钟数再匹配:

SELECT a.*
FROM 表A a
INNER JOIN 表B b 
    ON a.user = b.user
    AND TIMESTAMPDIFF(MINUTE, '2023-06-06 00:00:00', a.timestamp) BETWEEN b.open_minute AND b.close_minute
WHERE a.user = '用户A';

说明:

  • TIMESTAMPDIFF(MINUTE, '2023-06-06 00:00:00', a.timestamp) 计算出timestamp距离当天零点的分钟数
  • 通过INNER JOIN关联用户字段,同时过滤出时间落在目标区间内的记录

场景2:表B的open_minute/close_minute是完整时间戳

比如open_minute='2023-06-06 09:00:00',这类场景直接做区间匹配即可:

SELECT a.*
FROM 表A a
INNER JOIN 表B b 
    ON a.user = b.user
    AND a.timestamp BETWEEN b.open_minute AND b.close_minute
WHERE a.user = '用户A';

注意事项:

  • 确保表A的timestamp字段为DATETIME/TIMESTAMP类型,避免字符串格式不匹配导致错误
  • 如果表B存在重叠时间区间,查询结果会包含同时落在多个区间的重复记录,需去重可添加DISTINCT关键字:SELECT DISTINCT a.*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:19:59