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

如何查询指定时段用户持有物品 处理date_from和date_to默认值问题

正确查询方案

核心逻辑

你之前使用的date_from >= '查询起始' and date_to <= '查询结束'条件仅能匹配完全落在查询时间段内的持有记录,漏掉了三类符合要求的记录:

  • 持有周期开始早于查询起始时间、结束在查询时间段内
  • 持有周期开始在查询时间段内、结束晚于查询结束时间
  • 持有周期完全覆盖整个查询时间段
    本质是没有使用「时间区间重叠」的通用判断逻辑。

正确查询条件

只要持有周期和目标查询时间段存在重叠,即为符合要求的记录,判断逻辑为:
持有记录的起始日期 ≤ 查询时间段的结束日期 且 持有记录的结束日期 ≥ 查询时间段的起始日期
该逻辑天然兼容2000-01-01的默认起始值、2099-12-31的默认当前持有结束值,无需额外适配。

示例SQL

查询Louis在2021-01-01到2021-12-31期间持有的所有物品,写法如下:

SELECT Owner, Item, date_from, date_to 
FROM 你的表名
WHERE Owner = 'Louis'
AND date_from <= '2021-12-31'
AND date_to >= '2021-01-01';

边界调整说明

以上条件默认包含日期端点,符合你给出的业务规则:
戒指(date_from=2000-01-01,date_to=2021-02-28)、帽子(date_from=2021-03-01,date_to=2021-10-31)、牛仔裤(date_from=2021-11-01,date_to=2099-12-31)三类场景均可正常命中。
如果你的业务定义中「归还当天不算持有」,可将第二个条件调整为date_to > '查询起始日期';如果「领取当天不算持有」,可将第一个条件调整为date_from < '查询结束日期',按需微调即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:54:05