如何在sql server中添加天数到当前日期?

问题描述 投票:18回答:8

我想在当前日期添加天数并且工作正常但是当我在当前日期添加360天时它给了我错误的价值。

例如:当前日期是2014年4月11日我正在为它添加360天,它应该给我11/04/2015但它显示的是同一天11/04/2014。这一年没有变化。

这是我的代码

select dateadd(dd,360,getdate())
sql-server dateadd
8个回答
40
投票

做就是了-

Select (Getdate()+360) As MyDate

无需使用dateadd函数来添加或减去给定日期的天数。要添加年,月,小时,您需要dateadd功能。


21
投票

select dateadd(dd,360,getdate())将为您提供正确的日期,如下所示:

2017-09-30 15:40:37.260

我刚刚运行查询并检查:


10
投票
Dateadd(datepart,number,date)

你应该像这样使用它: -

select DATEADD(day,360,getdate())

然后你会找到相同的日期,但不同的年份。


4
投票

从SQL Server 2017 official documentation

SELECT DATEADD(day, 360, GETDATE());

如果你想删除GETDATE函数的时间部分,你可以这样做:

SELECT DATEADD(day, 360, CAST(GETDATE() AS DATE));

0
投票

可以试试这个

select (CONVERT(VARCHAR(10),GETDATE()+360,110)) as Date_Result

0
投票

两种或三种方式(取决于你想要的),说我们在当前日期是(在tsql代码中) -

DECLARE @myCurrentDate datetime = '11Apr2014 10:02:25 AM'

(顺便说一句 - 你的意思是11月11日或04Nov2014在您的原始帖子中?很难说,因为日期时间是文化偏见。在以色列11/04/2015意味着11月到2014年。我知道在美国11/04/2014它意味着04Nov2014.tommatoes tomatos我猜)

  1. SELECT @myCurrentDate + 360 - 默认日期时间计算后跟+(某个整数),只需在几天内添加。所以你会得到2015-04-06 10:02:25.000 - 不完全是你想要的,而只是明年关闭日期的球场公园。
  2. SELECT DateADD(DAY, 365, @myCurrentDate)DateADD(dd, 365, @myCurrentDate)会给你'2015-04-11 10:02:25.000'。这两种是合成糖(非常相似)。我想你应该这就是你想要的。但它仍然是错误的,因为如果日期是“四分之三”年(比如DECLARE @myCurrentDate datetime = '11Apr2011 10:02:25 AM'),你会得到'2012-04-10 10:02:25.000'。因为2012年有366天,还记得吗? (2012年2月29日消耗“额外”日。几乎每四年都有29Feb)。
  3. 所以我认为你的意思是 SELECT DateADD(year, 1, @myCurrentDate) 这给了2015-04-11 10:02:25.000
  4. 还是更好 SELECT DateADD(year, 1, DateADD(day, DateDiff(day, 0, @myCurrentDate), 0)) 它给你2015-04-11 00:00:00.000(因为datetime也有时间,对吗?)。含蓄啊?

0
投票

SELECT DateAdd(5,day(getdate())这是为了在当天增加5天。例如:今天的日期是23/08/2018,它通过使用上述查询成为28/08/2018


0
投票
**Add Days in Date in SQL**

 DECLARE @NEWDOB DATE=null

 SET @NEWDOB= (SELECT DOB, DATEADD(dd,45,DOB)AS NEWDOB FROM tbl_Employees)
© www.soinside.com 2019 - 2024. All rights reserved.