如何在一段时间后查找日期

时间:2017-01-04 05:11:02

标签: sql-server datetime

我正在使用SQL Server 2008.我想从当前日期和某些输入日期获取日期。

例如:天数= 300(可能是用户需要的任何天数)

当前日期

我试过了:

lapply

如何获得这两者之间的日期?

3 个答案:

答案 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