dateadd(SQL Server中的DATEADD怎么使用)

发布时间:2025-12-11 01:06:48 浏览次数:1

句法

与类似的功能一样,DATEADD可以对日期和时间进行算术运算。语法很简单:

DATEADD (datepart, number, date)

number部分必须是整数,并且必须在日期部分的可接受值范围内。

datepart部分必须是以下日期部分之一(我们在之前的帖子中看到过):

DATEPART缩略语
是的,yyyy
25美分硬币qq,q
mm,m
DAYOFYEARdy,y
dd,d
wk,ww
平日dw,w
小时HH
分钟mi,n
第二ss,s
毫秒女士
微秒MCS
纳秒NS

虽然DATEADD支持上表中所示的缩写,但我们应尽一切努力使用完整表达式来确保代码的清晰度。如果我们使用缩写,SQL Server不会运行得更快。

另请注意,虽然我们可以使用纳秒加或减DATEADD,但DATETIME2数据类型的最小粒度为100纳秒,因此需要考虑舍入。

退货类型

DATEADD将使用date参数中使用的数据类型返回结果。例如,如果我们使用以YYYYMMDD格式表示日期的文字字符串,则返回类型将是一个DATETIME值,因为文字字符串被隐式转换为DATETIME

SELECTDATEADD(DAY,1,'20181031')
-返回DATETIME值'2018-11-0100:00:00.000'

但是,如果我们使用DATETIME2输入值,结果将是一个DATETIME2值。

SELECTDATEADD(纳秒,100,CAST('20181031'ASDATETIME2))
-返回DATETIME2值'2018-10-3100:00:00.0000001'

加减

我们之前看到过DATEADD可以用于加法减法,这使得向后和向前计算值变得容易。我们假设我们需要计算100天前的时间点。如果我们以今天为出发点,它将如下所示:

declare@dtDATETIME2=SYSUTCDATETIME();
select@dtAS[TimeNow],DATEADD(DAY,-100,@dt)AS[TimeThen];

注意在部分中使用负号number。结果如下:

TimeNow: 2018-10-31 09:17:21.7866500
TimeThen: 2018-07-23 09:17:21.7866500

几个月的算术

关于这个功能的最后一个想法。在增加或减少月数时,请注意不包含31天的月份。例如,让我们在2018年2月底添加一个月:

SELECTDATEADD(MONTH,1,'20180228')
-返回DATETIME值'20180328'

但是,如果我们在2018年1月底添加一个,两个或三个月,我们会看到不同的结果:

SELECTDATEADD(MONTH,1,'20180131');
-返回DATETIME值'20180228'

SELECTDATEADD(MONTH,2,'20180131');
-返回DATETIME值'20180331'

SELECTDATEADD(MONTH,3,'20180131');
-返回DATETIME值'20180430'

DATEADD是一个非常有用的系统函数在T-SQL中添加和减去日期和时间的值,我广泛使用。只要我们记住它围绕数据类型和数月长度的怪癖,它就会非常强大。

感谢各位的阅读,以上就是“SQL Server中的DATEADD怎么使用”的内容了,经过本文的学习后,相信大家对SQL Server中的DATEADD怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是本站,小编将为大家推送更多相关知识点的文章,欢迎关注!

dateadd
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477