您好,登录后才能下订单哦!
这篇文章主要讲解了“SQL Server中的DATEADD怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server中的DATEADD怎么使用”吧!
与类似的功能一样, DATEADD
可以对日期和时间进行算术运算。语法很简单:
DATEADD (datepart, number, date)
该 number
部分必须是整数,并且必须在日期部分的可接受值范围内。
该 datepart
部分必须是以下日期部分之一(我们在之前的
帖子中看到 过):
DATEPART | 缩略语 |
年 | 是的,yyyy |
25美分硬币 | qq,q |
月 | mm,m |
DAYOFYEAR | dy,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
。
SELECT DATEADD(DAY,1,'20181031')
- 返回DATETIME值'2018-11-01 00:00:00.000'
但是,如果我们使用 DATETIME2
输入值,结果将是一个 DATETIME2
值。
SELECT DATEADD(纳秒,100,CAST('20181031' AS DATETIME2))
- 返回DATETIME2值'2018-10-31 00:00:00.0000001'
我们之前看到过 DATEADD
可以用于加法 和 减法,这使得向后和向前计算值变得容易。我们假设我们需要计算100天前的时间点。如果我们以今天为出发点,它将如下所示:
DECLARE @dt DATETIME2 = SYSUTCDATETIME();
SELECT @dt AS [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月底添加一个月:
SELECT DATEADD(MONTH,1,'20180228')
- 返回DATETIME值'20180328'
但是,如果我们在2018年1月底添加一个,两个或三个月,我们会看到不同的结果:
SELECT DATEADD(MONTH,1,'20180131');
- 返回DATETIME值'20180228'
SELECT DATEADD(MONTH,2,'20180131');
- 返回DATETIME值'20180331'
SELECT DATEADD(MONTH,3,'20180131');
- 返回DATETIME值'20180430'
DATEADD
是一个非常有用的系统函数在T-SQL中添加和减去日期和时间的值,我广泛使用。只要我们记住它围绕数据类型和数月长度的怪癖,它就会非常强大。
感谢各位的阅读,以上就是“SQL Server中的DATEADD怎么使用”的内容了,经过本文的学习后,相信大家对SQL Server中的DATEADD怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。