前言
在处理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 | q | 季 1 ~ 4 | |
Month | Mm | m | 月1 ~ 12 |
Day of year | Dy | y | 一年的日数,一年中的第几日 1-366 |
Day | Dd | d | 日,1-31 |
Weekday | Dw | w | 一周的日数,一周中的第几日 1-7 |
Week | Wk | ww | 周,一年中的第几周 0 ~ 51 |
Hour | Hh | h | 时0 ~ 23 |
Minute | Mi | n | 分钟0 ~ 59 |
Second | Ss | s | 秒 0 ~ 59 |
Millisecond | Ms | - | 毫秒 0 ~ 999 |
小结
本文只是简单的介绍了SQL中的时间日期函数以及时间日期的转换问题,并结合联机手册,对这些函数做了系统的说明,希望对初学者有所帮助。
作者:薛敬明
出处:http://blog.csdn.net/rocket5725
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。