最近在在一电力系统,里面用到报表,经常需要对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

*/