【问题标题】:Add dates everyday to a specific date每天将日期添加到特定日期
【发布时间】:2021-04-26 16:56:30
【问题描述】:

在 SQL 中,我想使用这个 startdate '2021-01-22' 并且每天将当前日期的数据添加到该开始日期。所以我的数据表将始终保持开始日期,但每天都会添加最新日期。

在我的存储过程中尝试过这样的事情;

DECLARE @DATESTART DATE;
DECLARE @DATEEND DATE;
SET @DATESTART =   '2021-01-22';
SET @DATEEND =  (SELECT DATEADD(day, DATEDIFF(day, 1, @DATESTART ), 1));

【问题讨论】:

  • 有什么理由不使用带有 CreateDate 列和 ActualDate 列的 TABLE 并增加/更改后者?
  • “mSQL”是什么意思?那应该是MySQL,还是你指的是Microsoft SQL Server??请在您的问题中添加适当的标签以澄清!
  • 它是微软的 sql server
  • edit 重新表述您的问题,因为它不清楚。 “每天将当前日期的数据添加到该开始日期”这部分对我来说毫无意义。 [1] 不能将数据行添加到date 类型值? [2] 您会不经常运行程序还是每天定期运行程序? [3] 2021-01-22 在这里不是一个坏例子吗?从该日期到今天有 0 天。您当前的@DATEEND 等于明天。 [4] 您是否需要日期列表以供进一步计算或插入新行?请添加预期的输出。
  • 什么表?如果一个问题引用了一个表,我需要一个表名、列名和示例数据。

标签: sql sql-server date tsql


【解决方案1】:

如果要生成某个日期后的日期,可以使用递归 CTE:

with dates as (
      select convert(date, '2020-01-01') as dte
      union all
      select dateadd(day, 1, dte)
      from dates
      where dte < convert(date, getdate())
     )
select *
from dates
option (maxrecursion 0);

结果可以保存在表格中。或者可以将 CTE 合并到另一个查询中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2011-01-20
    • 2023-03-09
    • 2018-10-20
    • 1970-01-01
    相关资源
    最近更新 更多