SQL Server 中时间函数

在SQLServer中时间函数DateparDateaddDatenameDatediff的用法及区别!...越详细越好,灌水的自重!... 在SQL Server中 时间函数
Datepar
Dateadd
Datename
Datediff
的用法 及区别 ! ...越详细越好, 灌水的自重!
展开
 我来答
匿名用户
推荐于2020-12-16
展开全部
DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime 值。

语法
DATEADD ( datepart , number, date )

DATEDIFF
返回跨两个指定日期的日期和时间边界数。

语法
DATEDIFF ( datepart , startdate , enddate )

DATEPART
返回代表指定日期的指定日期部分的整数。

语法
DATEPART ( datepart , date )

DATENAME
返回代表指定日期的指定日期部分的字符串。

语法
DATENAME ( datepart , date )

比较 DATEADD 和 DATEDIFF
DATEADD 函数向指定日期添加一段时间间隔。例如,如果 titles 表中所有书籍的发行日期都推迟三天,则可使用以下语句获得新的发行日期:

USE pubs
SELECT DATEADD(day, 3, pubdate)
FROM titles

如果日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。可以使用 DATEADD 对 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期至少改变了 1 分钟时,这样做才有意义。

DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期之间各日期部分相差的时间量。换句话说,它得出两个日期之间的间隔。结果是等于 date2 - date1 的带符号整数值,以各日期部分为单位。

下面的查询使用日期 1995 年 11 月 30 日,并得出 pubdate 和该日期之间相差的天数。

USE pubs
SELECT DATEDIFF(day, pubdate, 'Nov 30 1995')
FROM titles

对于 titles 中 pubdate 为 1995 年 10 月 21 日的行,上述查询生成的结果为 40。(10 月 21 日和 11 月 30 日之间相差 40 天。)要计算以月为单位的间隔,请使用以下查询:

USE pubs
SELECT interval = DATEDIFF(month, pubdate, 'Nov 30 1995')
FROM titles

该查询对 pubdate 值在 10 月的行生成的值为 1,对 pubdate 值在 6 月的行生成的值为 5。

若 DATEDIFF 函数中的第一个日期晚于指定的第二个日期,则产生的结果为负数。由于 titles 中有两行使用 GETDATE 函数指派 pubdate 的值,所以这些值被设置为 pubs 数据库的创建日期,这样在前面的两个查询中这两行返回负数。

如果一个或两个日期参数是 smalldatetime 值,它们将在内部转换为 datetime 值进行计算。为了进行计算,smalldatetime 值中的秒和毫秒将自动设置为 0。

比较 DATEPART 和 DATENAME
DATEPART 和 DATENAME 函数将 datetime 值的指定部分(年、季度、天、小时等)生成为整数值或 ASCII 字符串。由于 smalldatetime 只能精确到分钟,所以在这两个函数中使用 smalldatetime 值时,返回的秒和毫秒部分总是为零。

下面的示例假定日期为 5 月 29 日:

SELECT DATEPART(month, GETDATE())
下面是结果集:

------------
5

(1 row(s) affected)

SELECT DATENAME(month, GETDATE())

下面是结果集:

------------
May

(1 row(s) affected)

具体可以参考SQL Server联机丛书(安装SQLServer时自动的帮助)
邱宣衅夜蓉
2019-05-27 · TA获得超过3686个赞
知道小有建树答主
回答量:3176
采纳率:33%
帮助的人:172万
展开全部
SQLServer2000中没有这种
数据类型
,只有SQLServer2008中才有这种数据类型,名字叫time数据
类型
.time类型只有时分秒,没有
年月日
.
在SQLServer2000中如果要实现这种效果,那么就不适合用
日期
和时间类型,而应该采用
字符串
类型,值由时间
类型转换
而来,如:
SELECT
CONVERT(varchar(100),
GETDATE(),
108)--结果:
10:57:49
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式