【问题标题】:Dynamic Date Variable动态日期变量
【发布时间】:2023-03-20 00:39:01
【问题描述】:

有没有办法在我的代码中循环遍历变量的连续数据值?

我的日期变量每周六更新一次,所以每当我更新我的表时,我必须通过每次执行更改数据变量来手动回溯代码。这是一个非常漫长的过程,因为我使用需要 1-2 分钟运行的代码来回溯 30 多个日期。

例如,如果我加载了一个包含 2020-2021 年(目前)每个星期六的日期的辅助表,我可以通过这些值循环变量吗?

Declare @Saturday Date
Set @Saturday = '2021-04-24'

Declare @Friday Date
Set @Friday = '2021-04-30'
;

【问题讨论】:

  • 你可以加入你的日历表。如果您提供完整代码,我们可以看到我们可以做什么

标签: sql sql-server date


【解决方案1】:

我有类似的事情,我必须每天重新计算值,如果某些配置发生更改,我们必须每天将这些更改回溯 x 天

我使用类似的方法来实现结果,基本上是从最远的点开始并向前移动,但如果更可取,您可以以其他方式运行它。另一方面,我运行的代码每次执行需要几秒钟而不是 1-2 分钟。

Declare @Saturday Date
Set @Saturday = '2020-01-04';

while @Saturday < GETDATE()

begin
print @saturday; /*do something*/
set @Saturday = DATEADD(WEEK, 1, @Saturday);
end

【讨论】:

  • 这个解决方案似乎是前进的方向。它适用于第一次运行,但所有后续运行都不会通过任何行。可能是由于我的代码中同时包含“@Saturday”和“@Friday”变量。我的“@Friday”变量设置为“dateadd(day,6,@Saturday)”。我可以按照您显示的方式应用这两个变量吗?
  • 更新:它通过添加@Friday 变量以与您所做的完全相同的方式工作。非常感谢 - 这为我节省了很多时间!
猜你喜欢
  • 1970-01-01
  • 2015-10-27
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2021-11-25
  • 1970-01-01
  • 2015-09-28
相关资源
最近更新 更多