SQL Server中的日期和时间:DATEADD()
我们现在处于SQL Server和Azure SQL数据库中关于日期和时间的长篇系列的主页。
本周我们将讨论日期和时间中我最喜欢的T-SQL函数之一: 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中对日期字段值的比较
本文转自:http://www.cnblogs.com/feison/articles/166981.html sql server中对日期字段的比较方式有多种,介绍几种常用的方式: 用northwi ...
- SQL Server中的日期时间类型
一. 数据类型 SQL Server008在上一个版本的基础上把日期时间类的数据类型增加到了六个.除了SQL Server2005的datetime和smalltime之外,加了date,dateti ...
- Sql Server系列:日期和时间函数
1. 获取系统当前日期函数GETDATE() GETDATE()函数用于返回当前数据库系统的日期和时间,返回值的类型为datetime. SELECT GETDATE() 2. 返回UTC日期的函数G ...
- oracle sql 格式化日期,怎么在 SQL Server中 将日期格式化
to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下 在Oracle数据库中,Oracle to_da ...
- SQL Server中时间格式转换函数convert()的使用
convert(varchar(10),字段名,转换格式) CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar, ...
- sql server中datetime默认值设置和日期函数
sql server中datetime默认值设置和日期函数 select CONVERT(varchar, getdate(), 120 ) -----------------> ...
- 有关SQL Server中日期的常见问题解答
介绍 (Introduction) In this article, I compiled a list of FAQs and Answers about dates. 在本文中,我整理了有关日期的 ...
- 在SQL server中设置时间格式
在SQL server中设置时间格式 2008-01-13 12:21:02 今天在vs中更新sqlserver,却发现我vs中是当前时间,insert到数据库中却变成了1905年,搞了半天,原来是s ...
- MS SQL Server中的CONVERT日期格式化大全
來源:http://www.knowsky.com/345490.html CONVERT 将某种数据类型的表达式显式转换为另一种 数据类型.由于某些需求经常用到取日期格式的不同.现以下可在 SQL ...
最新文章
- 确定一组矩形是否有两个重叠的算法
- 1346. 检查整数及其两倍数是否存在 golang
- C语言Node lt T gt,c语言论坛填空;#includelt;stdio.hgt;# 爱问知识人
- 【CodeForces - 803D】Magazine Ad(二分答案)
- 【2016年第1期】基于大数据的小麦蚜虫发生程度决策树预测分类模型
- axios post object object_深入学习Axios源码(构建配置)
- C++中 类与类之间的关系
- 退休是否需要等到对应日再进行办理?
- nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)
- 日常客户咨询问题总结
- 用js解析经json序列化后的C#的DateTime类型数据
- 基于matlab雷达算法,基于MATLAB的雷达信号处理
- 秒杀面试之通关流程篇
- mmdetection - config配置文件之schedule(learning rate)
- Fluent瞬态结果导出为Ensight格式
- 知我者谓我心忧,不知我者谓我何求
- 【随笔1】石榴红,依旧。
- 游戏图片文件和声音文件的隐藏
- 朱棣文 哈佛开学典礼演讲
- new(创建)一个对象时都发生了什么?