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

如何获取与本周当前日期时间匹配的上周对应时段数据?

解决上周数据与本周当前时段精准匹配的SQL查询问题

你需要的是上周数据中,与本周截至当前日期时间的时长完全匹配的部分——即上周对应本周当前日期之前的所有天数全天保留,仅上周对应本周当前日期的当天,截取到与当前时间相同的时段。

以下是修改后的SQL查询条件,完美匹配你的需求:

WHERE 
  /* 当前年份 */ 
  YEAR(DATE_FIELD) = YEAR(GETDATE())
  /* 上周 */
  AND DATEPART(week, DATE_FIELD) = DATEPART(week, GETDATE()) - 1
  /* 核心匹配逻辑:上周早于对应本周当前日期的天数全保留,对应当天仅保留到当前时间 */
  AND (
    -- 上周日期早于本周当前日期对应的上周日期(如本周周二,上周的周日、周一)
    CAST(DATE_FIELD AS DATE) < DATEADD(week, -1, CAST(GETDATE() AS DATE))
    OR
    -- 上周日期等于本周当前日期对应的上周日期,且时间不晚于当前时间
    (
      CAST(DATE_FIELD AS DATE) = DATEADD(week, -1, CAST(GETDATE() AS DATE))
      AND DATE_FIELD <= DATEADD(week, -1, GETDATE())
    )
  )

逻辑说明

  • 用CAST(DATE_FIELD AS DATE)提取日期部分,和DATEADD(week, -1, CAST(GETDATE() AS DATE))(本周当前日期往前推一周的纯日期)做比较:
    • 当上周日期早于这个对应日期时,说明是上周的"前几天"(比如你示例中的周日、周一),这部分数据全部保留,不限制时间范围。
    • 当上周日期等于这个对应日期时,说明是上周的"对应当天"(示例中的上周周二),此时用DATE_FIELD <= DATEADD(week, -1, GETDATE())限制时间不超过当前时间往前推一周的时刻,确保和本周当前时长完全对齐。

你之前直接加小时限制的问题在于,会把所有天数的时间都截断,而这个逻辑只针对上周的"对应当天"做时间限制,其他天数不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:54:55