现在的位置: 首页 > 综合 > 正文

SQL中常见的时间函数

2013年09月10日 ⁄ 综合 ⁄ 共 1800字 ⁄ 字号 评论关闭

前言

在处理SQL中的时间字段时,很多初学者都忽略了SQL 自带的日期时间函数,本文大致介绍常用的日期时间函数以及时间格式的转换问题。

1. 日期时间函数

(1) 获取当前系统日期、时间

select getdate()

(2) dateadd()  在向指定日期加上一段时间的基础上,返回新的 datetime 值;

为了将某个时间字段更新到前一天,举例如下:

UPDATE ProduceTasks set BuildTime=DATEADD(day,-1,BuildTime)

如果将某个时间字段更新到下个月,举例如下:

UPDATE ProduceTasks set BuildTime=DATEADD(MONTH,1,BuildTime)

(3) datediff 返回跨两个指定日期的日期和时间边界数;

如果要计算两个日期、时间的跨度,举例如下:

select datediff(day,'2008-11-18','2013-01-01') --输入结果为1505,表示相差1505天
select datediff(YEAR,'2008-11-18','2013-01-01')--输入结果为5,表示相差5年

(4) datepart 返回代表指定日期的指定日期部分的整数,当然day(),year(),month()与其类似

如果要获得某个详细时间的年、月、日,举例如下:

select DATEPART(YEAR,'2013-01-11') --输出结果为2013

(5) datename 返回代表指定日期的指定日期部分的字符串
如果要获得某个时间是星期几,可以用如下代码:

select datename(weekday, '2013-01-11') --输出结果为星期五

2. 时间日期格式转换

本部分只介绍常见的几种转换方式,用到的函数就是:CONVERT

select CONVERT(varchar, getdate(), 120 )  --输出‘2013-01-10 11:30:00’
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --输出20130110113040
select CONVERT(varchar(12) , getdate(), 111 ) --输出2013/01/10
select CONVERT(varchar(12) , getdate(), 112 ) --输出20130110
select CONVERT(varchar(12) , getdate(), 102 )  --输出2013.01.10

3.汇总说明

前面对函数的解释利用了简单的实例,SQL手册中关于这些函数的定义如下表所示:

函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

对于interval的设定值如下:

缩 写(Sql Server) Access 和 ASP 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh 时0 ~ 23
Minute Mi 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

小结

本文只是简单的介绍了SQL中的时间日期函数以及时间日期的转换问题,并结合联机手册,对这些函数做了系统的说明,希望对初学者有所帮助。

作者:薛敬明
出处:http://blog.csdn.net/rocket5725 
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

抱歉!评论已关闭.