我正在使用SQL Server 2008.我想从当前日期和某些输入日期获取日期。
例如:天数= 300(可能是用户需要的任何天数)
当前日期
我试过了:
lapply
如何获得这两者之间的日期?
答案 0 :(得分:0)
为了实现这一点,请使用DATEADD()函数。然后,您需要找到一种方法将日期部分作为变量传递。
关于您发布的代码...运行时会发生什么?
答案 1 :(得分:0)
这是一种做法
DECLARE @Period INT = 10 --300 in your case
DECLARE @FromDate DATE = GETDATE()
DECLARE @ToDate DATE = DATEADD(dd,@Period,@fromDate)
;WITH cte AS
(
SELECT @fromDate AS dt
UNION ALL
SELECT DATEADD(dd,1,dt) FROM cte WHERE dt<@ToDate
)
SELECT * FROM cte
更新:
如果您只想在period
天之后终止,那么它就是
DATEADD(dd,@Period,@fromDate)
注意,period
必须是int
答案 2 :(得分:0)
如果您直接传递period in days
-
;with cte as (
select getdate() as [urdate], 1 as Level
union all
select dateadd(dd,1,urdate), level + 1
from cte where level < 300 -- here the 300 can vary based on your input/ user input
)
select cast(urdate as date) from cte option ( MaxRecursion 0 )
编辑:如果您只想要结束日期,那么这应该适合您 -
;with cte as (
select getdate() as [urdate]
union all
select dateadd(dd,300,getdate()) -- this is the main statement and 300 will be configurable in your case
)
select cast(urdate as date) from cte