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

如何基于文件中最新日期而非当前日期获取过去12个月数据

基于最新[Add_Datetime]筛选过去12个月数据的SQL解决方案

你的问题核心是原查询用当前日期(GETDATE())作为筛选基准,但数据库内最新的[Add_Datetime]是2021-05-07,当前日期晚于该值,导致没有符合条件的数据。只需将基准替换为数据库中[Add_Datetime]的最大值即可。

方案一:子查询直接获取最新日期

直接在WHERE子句中嵌套子查询获取最大[Add_Datetime],以此为基准计算过去12个月的起始点:

SELECT 
    [Contact_Id],
    [Add_Datetime],
    [Arena_Name],
    [Event_Date],
    [Event_Name],
    [Season_Name],
    [Seat_Num],
    [Num_Seats],
    [Paid_value]
FROM 
    [Group CH].[dbo].[CustomerData]
WHERE
    [Add_Datetime] >= DATEADD(Month, DATEDIFF(Month, 0, (SELECT MAX([Add_Datetime]) FROM [Group CH].[dbo].[CustomerData])) - 12, 0)

方案二:使用变量存储最新日期(可读性更好)

先通过变量获取最大[Add_Datetime],再用于筛选逻辑,适合需要复用基准日期的场景:

DECLARE @LatestAddDate DATE = (SELECT MAX([Add_Datetime]) FROM [Group CH].[dbo].[CustomerData])

SELECT 
    [Contact_Id],
    [Add_Datetime],
    [Arena_Name],
    [Event_Date],
    [Event_Name],
    [Season_Name],
    [Seat_Num],
    [Num_Seats],
    [Paid_value]
FROM 
    [Group CH].[dbo].[CustomerData]
WHERE
    [Add_Datetime] >= DATEADD(Month, DATEDIFF(Month, 0, @LatestAddDate) - 12, 0)

逻辑说明

  • SELECT MAX([Add_Datetime]):获取数据库中最新的记录日期(即2021-05-07)
  • DATEDIFF(Month, 0, @LatestAddDate):计算从SQL起始日期(1900-01-01)到最新日期的月份数
  • DATEADD(Month, ... - 12, 0):将月份数减12后,再转换为对应的日期,得到过去12个月的起始月份第一天(即2020-05-01)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:15:34