好学IT学院:IT信息技术分享交流平台
来源:互联网  作者:佚名  发布时间:2009-03-31  ★★★加入收藏〗〖手机版
摘要:最近在在一电力系统,里面用到报表,经常需要对SQL日期进行操作。现在将一些常用的SQL日期操作函数记下…

最近在在一电力系统,里面用到报表,经常需要对SQL日期进行操作。现在将一些常用的SQL日期操作函数记下

/**//**//**//* datepart()函数的使用                        
* datepart()函数可以方便的取到时期中的各个部分
*如日期:2006-07--02 18:15:36.513
* yy:取年         2006
* mm:取月         7
* dd:取月中的天   2
* dy:取年中的天   183
* wk:取年中的周   27
* dw:取周中的天   1
* qq:取年中的季度   3
* hh:取小时      18
* mi:取分钟      15
* ss:取秒        36
* 以下简单的语句可以演示所取到的结果

*/
select getdate()
select datepart(mm,getdate())
select datepart(yy,getDate())
select datepart(dd,getdate())
select datepart(dy,getdate())
select datepart(wk,getdate())
select datepart(dw,getdate())
select datepart(qq,getdate())
select datepart(hh,getdate())
select datepart(mi,getdate())
select datepart(ss,getdate())

select datediff(dd,getdate(),'12/25/2006')--计算从今天到12/25/2006还有多少天
select datediff(mm,getdate(),'12/25/2006')--计算从今天到12/25/2006还有多少个月
select datename(mm,getdate())           --以字符串而不是数字的形式得到今天的月份(07)
 
select dateadd(dd,30,getdate())         --在目前的日期日期上加30天
select dateadd(mm,3,getdate())          --在目前的日期日期上加3个月
select dateadd(yy,1,getdate())          --在目前的日期日期上加1年

select DATEADD(qq,DATEDIFF(qq,0,getdate()), 0)--得到本季度第一天
select dateadd(mm,-3,DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)) --得到上主、季度第一天--另外使用getdate()

函数返回的日期包括到毫秒级,有时我们只需要取出一部分如 2007-05-26
select convert(varchar(10),getdate(),120)--结果2007-05-26

/**//*
说明 varchar(10)为截取长度为10个字符
getdate()是需要处理的日期,也可以直接给日期字符串
如:2007-05-26 10:00:28.420
120:为getdate()的格式具体可参看以下列表

参数 结果 
 100  05  8 2006  9:27PM
 101  05/08/2006
 102  2006.05.08
 103  08/05/2006
 104  08.05.2006
 105  08-05-2006
 106  08 05 2006
 107  05 08, 2006
 108  21:30:51
 109  05  8 2006  9:31:11
 110  05-08-2006
 111  2006/05/08
 112  20060508
 113  08 05 2006 21:31:59
 114  21:33:06:503
 120  2006-05-08 21:33:38

  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测