sql server-WHERE子句中的T-sql动态日期范围(上一会计年度+今年迄今为止)



我使用下面的WHERE子句只加载上一个会计年度加上一年至今的记录。

在没有WHERE clause的情况下运行,1mil记录需要30秒。对于WHERE子句,我不得不在2小时后停止它。

你能分享你的想法吗

WHERE 
    ([schema].[table].[DATE] >= DATEADD
        (yy, - 1, DATEADD
            (MONTH,(MONTH(GETDATE()) - 1) / 6 * 12 - 6,
             CAST(CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME)
            )
        )
    )
Declare @PastFiscalYear Date
    Set @PastFiscalYear= DATEADD(yy, - 1, DATEADD(MONTH,(MONTH(GETDATE()) - 1) / 6 * 12 - 6,CAST(CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME)))
    WHERE 
        ([schema].[table].[DATE] >= @PastFiscalYear )

你能试试这个吗

这将带回自上一会计年度开始日期以来的数据。只要把-3改成你的财政年度抵消额就行了。-3是10月份的。

[schema].[table].[DATE] >= DATEADD(mm,-3,DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, -1, GETDATE())), 0))

最新更新