sql server日期时间函数
1. 当前系统日期、时间
1 B1 t1 O2 o( U1 o' i+ m% T& H select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
& k% ?* g+ |$ I+ B$ B1 J% H 例如:向日期加上2天 $ A) h( a: h0 _/ h
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3 I+ g0 _9 q( K1 R5 Z3. datediff 返回跨两个指定日期的日期和时间边界数。
4 Q7 ^3 n5 W2 s' j% b select datediff(day,'2004-09-01','2004-09-18') --返回:174 c9 z/ }. {3 l* {
4. datepart 返回代表指定日期的指定日期部分的整数。" t9 ~: _4 A# t! l1 q
SELECT DATEPART(month, '2004-10-15') --返回 10+ x" X2 N- }3 j( t' ~) ?
5. datename 返回代表指定日期的指定日期部分的字符串
2 D3 V( d8 O# y/ f) L SELECT datename(weekday, '2004-10-15') --返回:星期五3 ]4 a0 Q! l, n K' L
6. day(), month(),year() --可以与datepart对照一下
' y( D0 B7 i9 d( I; T, L# v8 hselect 当前日期=convert(varchar(10),getdate(),120)
+ |, W3 D) e) [* O,当前时间=convert(varchar(8),getdate(),114) 5 a. E' N% ~, z0 x1 ?' ?. @
select datename(dw,'2004-10-15') 1 O3 E7 A; _( U7 U6 W; l* g
select 本年第多少周=datename(week,'2004-10-15')8 C( q& K" b1 ^$ p3 S) J! V
,今天是周几=datename(weekday,'2004-10-15')7 J4 {0 g" @, ?# k
0 o6 J2 C" A& M. x- e
函数 |
参数/功能 |
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的设定值如下:
6 T2 s& Z& Z! O( U2 B# ^4 R9 e) K
值 |
缩 写(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 |
. w7 A6 K, d7 ?* i s' g% haccess 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似* S, ]6 }% {5 F* X
举例:. _( X* m; k1 e& Q
1.GetDate() 用于sql server :select GetDate()
$ s2 j! C( K2 f% ]5 L3 Y9 I% S' f7 C; C5 i$ M& m3 G3 M- |/ u; I
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒7 T3 {* Z3 N: S) e, E" m$ O$ d, G
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天- @8 A% H+ R5 k. i9 e
1 D# y8 c" L: V3 ]5 U1 A' \
3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)
( f- b* [. C! y/ [& a1 R SDatePart('d','2005-7-25 22:56:32')返回值为 25即25号) U7 H- ~. x. Q; q7 x* E# g4 {
DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天% |& v3 R% C( |3 n; s/ l* ~
DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年
select GPRSId from TB_GPRS
where DATEDIFF ( mi , lineTime , getdate() )>10 系统时间比系统时间小于10分钟
DATEDIFF ( datepart , startdate , enddate )
参数
datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft? SQL Server? 识别的日期部分和缩写。
日期部分 缩写
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
例 select * from tab where datediff(ss,日期,getdate())=10
减1年:dateadd(yy,-1,'2005-09-02 08:30:00')
减1月:dateadd(mm,-1,'2005-09-02 08:30:00')
减1天:dateadd(dd,-1,'2005-09-02 08:30:00')
减1小时:dateadd(hh,-1,'2005-09-02 08:30:00')
减1分钟:dateadd(mi,-1,'2005-09-02 08:30:00')