微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer中关于时间函数的应用

文章来源:胡同的小窝

sqlServer中关于时间函数的应用

sqlServer中关于时间函数的应用

通常在开发数据库应用中,都会涉及到与时间日期相关的查询操作的,
下面就这些常见的问题,总结一下。

首先介绍一下,在sql Server中处理时间的函数比较常用就这下面几个,熟悉了这些时间函数的使用,
会使你在以后相关的时间日期查询中得心应手滴:

getdate()函数:     取得系统当前的日期和时间,返回datetime类型值
year()函数:        取指定时间的年份值,返回整数值
month()函数:       取指定时间的月份值,返回整数值
day()函数:         取指定时间的日期值,返回整数值
datepart()函数:    以整数的形式返回时间的指定部分(年,月,日等)。
dateadd()函数:    通过给指定的时间的指定部分加上一个整数值以返回一个新时间值。
datediff()函数:    返回两个时间以指定时间部分来计算的差值,返回整数值

下面是一些时间缩写符号的意义和取值范围

yy 1753-9999 年份

qq 1-4 刻

mm 1-12 月

dy 1-366 日

dd 1-31 日

wk 1-54 周

dw 1-7 周几

hh 0-23 小时

mi 0-59 分钟

ss 0-59 秒

ms 0-999 毫秒

下面分别用例子说说上面的函数用法:


getdate()函数: 取得系统当前的日期和时间,返回datetime类型值
用法:getdate()
例子: 输出当前时间日期
select getdate() as Now
输出结果:
Now
2006-08-04 10:11:59.253
(1 row(s) affected)


year(),month(),day()函数:
用法:year(param),month(param),day(param)
参数说明:所有参数param都是个时间日期值
上面三个函数用法都很相似
我举一个例子:输入当前年份值
select year(getdate()) as [Now year]
输出结果:
Now year
2006
(1 row(s) affected)


datepart()函数:以整数的形式返回时间的指定部分(年,月,日等)。
用法:datepart(datepart,date)
参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute。
date是所指定的时间。
例子:
SELECT DATEPART(month,GETDATE()) AS [month]
输出结果:
Month
8
(1 row(s) affected)


dateadd()函数:通过给指定的时间的指定部分加上一个整数值以返回一个新时间值。
用法:dateadd(datepart,number,date)
参数说明:datepart(同上)
date(同上)
number要增加的值,整型,可正可负,正值返回date之后的时间值,负值返回date
之前的时间值
例子:
select getdate() as [today]
select dateadd(day,-1,getdate())   as [yesterday]
select dateadd(day,1,getdate())   as [tomorrow]
输出
today
1999-11-21 19:42:41.410
(1 row(s) affected)

yesterday
1999-11-20 19:42:41.410
(1 row(s) affected)

tomorrow
1999-11-22 19:42:41.410
(1 row(s) affected)


datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。如1991-6-12和1991-6-21之间以

天来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月
用法:datediff(darepart,date1,date2)
参数说明:datepart(同上)
date1、date2(同上date)
例子:相差几个月
select datediff(month,'1991-6-12','1992-6-21') as [month]
输出
month
12
(1 row(s) affected)

下面是一些特殊时间日期查询用法总结:
1.一个月第一天的
SELECT DATEADD(mm,DATEDIFF(mm,getdate()),0)

2.本周的星期一
SELECT DATEADD(wk,DATEDIFF(wk,0)

3.一年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0)

4.季度的第一天
SELECT DATEADD(qq,DATEDIFF(qq,0)

5.当天的半夜
SELECT DATEADD(dd,DATEDIFF(dd,0)

6.上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm,0))

7.去年的最后一天
SELECT dateadd(ms,DATEADD(yy,0))

8.本月的最后一天
SELECT dateadd(ms,DATEDIFF(m,getdate())+1,0))

9.本年的最后一天
SELECT dateadd(ms,0))

10.本月的第一个星期一select DATEADD(wk,dateadd(dd,6-datepart(day,getdate())),0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐