首页 > 解决方案 > 将日期序列调用到存储过程的最佳方法

问题描述

我有一个存储过程

EXEC demoProcedure @start='01-01-2019',@end = '02-01-2019'

存储过程采用两个日期参数,并在它们之间运行数据。我的问题是我想让这个程序多次检查多个日期范围。例如我想基本上打电话:

EXEC demoProcedure @start='01-01-2019',@end = '02-01-2019';
EXEC demoProcedure @start='02-01-2019',@end = '03-01-2019';
....
EXEC demoProcedure @start='12-01-2019',@end = '01-01-2020'

或者每个月有效地调用一次这个存储过程。过去,我一直在创建一个临时日期表:

;WITH DateTable AS
(
SELECT row = 1, date = '2019-01-01'
UNION ALL

    SELECT row + 1, DATEADD(YEAR, -1, date)
    FROM DateTable
    WHERE row + 1 <= 7
)
SELECT *
FROM DateTable

在过去的 7 年里,它实际上首先返回了 Jan。有没有办法轻松地将这两者结合起来,为每组日期调用一次存储过程?即调用它为 start=row(1),end=row(2); start=row(2),end=row(3);.... 到行尾?或者有没有更简单的方法来设置所有这些。谢谢!

标签: sqlsql-servertsqlstored-proceduresssms

解决方案


推荐阅读