SQLSERVER时间⽇期处理函数
Sql Server中的⽇期与时间函数
1. 当前系统⽇期、时间
select getdate()
2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值
例如:向⽇期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
--当前字段值、加2天、减2天、加2个⽉、减2个⽉、加2年、减2年
SELECT CreateTime 字段⽇期,DATEADD("DAY",2,CreateTime) 加2天,DATEADD("DAY",-2,CreateTime) 减2
天,DATEADD("M",2,CreateTime) 加2个⽉,DATEADD("M",-2,CreateTime) 减2个⽉,DATEADD("YEAR",2,CreateTime) 加2年,DATEADD("YEAR",-2,CreateTime) 减2年 FROM JT_Biz_L
ecture;
--某⼀字段(⽇期型)与当前时间作差
SELECT CreateTime,GETDATE() 当前时间,DATEDIFF(day,GETDATE(),CreateTime) 天数 FROM JT_Biz_Lecture;
3. datediff 返回跨两个指定⽇期的⽇期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
4. datepart 返回代表指定⽇期的指定⽇期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定⽇期的指定⽇期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照⼀下
select 当前⽇期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15')
,今天是周⼏=datename(weekday,'2004-10-15')
函数参数/功能datediff是字符型函数
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 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
Second Ss s秒 0 ~ 59
Millisecond Ms-毫秒 0 ~ 999
access 和 asp 中⽤date()和now()取得系统⽇期时间;其中DateDiff,DateAdd,DatePart也同是能⽤于Access和asp中,这些函数的⽤法也类似
举例:
1.GetDate() ⽤于sql server :select GetDate()
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天
3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期⼀(周⽇为1,周六为7)
DatePart('d','2005-7-25 22:56:32')返回值为 25即25号
DatePart('y','2005-7-25 22:56:32')返回值为 206即这⼀年中第206天
DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年
Convert函数的详细⽤处
Sql Server 中⼀个⾮常强⼤的⽇期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
常⽤:
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
基本的处理和知识
1.⼀个⽉第⼀天的
复制保存Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本周的星期⼀
复制保存Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.⼀年的第⼀天
复制保存Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第⼀天
复制保存Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
5.当天的半夜
复制保存Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
6.上个⽉的最后⼀天
复制保存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
7.去年的最后⼀天
复制保存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
8.本⽉的最后⼀天
复制保存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
9.本年的最后⼀天
复制保存Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
10.本⽉的第⼀个星期⼀
复制保存select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
返回当前⽇期和时间
通过函数GETDATE(),你可以获得当前的⽇期和时间。函数GETDATE()可以⽤来作为DATEDIME型字段的缺省值。这对插⼊记录时保存当时的时间是有⽤的。要建⽴⼀个表,其中的记录包含有当前的⽇期和时间,可以添加⼀个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:
复制保存Create TABLE site_log (
username VARCHAR(40),
useractivity VARCHAR(100),
entrydate DATETIME DEFAULT GETDATE())
转换⽇期和时间convert()函数
函数GETDATE()的返回值在显⽰时只显⽰到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。要得到不同格式的⽇期和时间,你需要使⽤函数CONVERT()。例如,当下⾯的这个语句执⾏时,显⽰的时间将包括毫秒:复制保存Select CONVERT (VARCHAR(30),GETDATE(),9) 注意例⼦中数字9的使⽤。这个数字指明了在显⽰⽇期和时间时使⽤哪种⽇期和时间格式。当这个语句执⾏时,将显⽰如下的⽇期和时间:输出窗⼝复制保存 Nov 30 1997 3:29:55:170AM (1 row(s) affected) 在函数CONVERT()中你可以使⽤许多种不同风格的⽇期和时间格式。下表显⽰了所有的格式。⽇期和时间的类型:复制保存类型值标准输出 0 Default mon dd yyyy hh:miAM 1 USA mm/dd/yy 2 dd 3 British/French dd/mm/yy 4 5 Italian dd-mm-yy 6 - dd mon yy 7 - mon dd,yy 8 - hh:mi:ss 9 Default + milliseconds--mon dd yyyy hh:mi:ss:mmmAM(or ) 10 USA mm-dd-yy 11 JAPAN yy/mm/dd 12 ISO yymmdd 13 Europe Default + milliseconds--dd mon yyyy hh:mi:ss:mmm(24h) 14 - hh:mi:ss:mmm(24h) 类型0,9,和13总是返回四位的年。对其它类型,要显⽰世纪,把style值加上100。类型13和14返回24⼩时时钟的时间。类型0,7,和13返回的⽉份⽤三位字符表⽰(⽤Nov代表November).
对表中所列的每⼀种格式,你可以把类型值加上100来显⽰有世纪的年(例如,00年将显⽰为2000年)。例如,要按⽇本标准显⽰⽇期,包括世纪,你应使⽤如下的语句:
复制保存Select CONVERT(VARCHAR(30), GETDATE(),111)
在这个例⼦中,函数CONVERT()把⽇期格式进⾏转换,显⽰为1997/11/30
抽取⽇期和时间
在许多情况下,你也许只想得到⽇期和时间的⼀部分,⽽不是完整的⽇期和时间。为了抽取⽇期的特定部分,你可以使⽤函数DATEPART(),象这样:
复制保存Select site_name 'Site Name',
DATEPART(mm,site_entrydate) 'Month Posted' FROM site_directory
函数DATEPART()的参数是两个变量。第⼀个变量指定要抽取⽇期的哪⼀部分;第⼆个变量是实际的数据。在这个例⼦中,函数DATEPART()抽取⽉份,因为mm代表⽉份。下⾯是这个Select 语句的输出结果:
输出窗⼝复制保存
Site Name Month Posted
…
……………………………………………………………
Yahoo 2
Microsoft 5
Magicw3 5
(3 row(s) affected)
Month Posted列显⽰了每个站点被查询的⽉份。函数DATEPART()的返回值是⼀个整数。你可以⽤这个函数抽取⽇期的各个不同部分,如下表所⽰。
⽇期的各部分及其简写
复制保存⽇期部分简写值
year yy 1753--9999
quarter qq 1--4
month mm 1--12
day of year dy 1--366
day dd 1--31
week wk 1--53
weekday dw 1--7(Sunday--Saturday)
hour hh 0--23
minute mi 0--59
second ss 0--59
milisecond ms 0--999
当你需要进⾏⽇期和时间的⽐较时,使⽤函数DATEPART()返回整数是有⽤的。但是,上例中的查询结果(2,5)不是⼗分易读。要以更易读的格式得到部分的⽇期和时间,你可以使⽤函数DATENAME(),如下例所⽰:
复制保存Select site_name 'Site Name'
DATENAME(mm,site_entrydate) 'Month Posted'
FROM site_directory
函数DATENAME()和函数DATEPART()接收同样的参数。但是,它的返回值是⼀个字符串,⽽不是⼀个整数。下⾯是上例该⽤DATENAME()得到的结果:
输出窗⼝复制保存
Site Name Month Postec
………………………………………………………………….
Yahoo February
Microsoft June
Magicw3 June
(3 row(s) affected)
你也可以⽤函数DATENAE()来抽取⼀个星期中的某⼀天。下⾯的这个例⼦同时抽取⼀周中的某⼀天和⽇期中的⽉份:
复制保存Select site_name 'Site Name',
DATENAME(dw,site_entrydate)+ '-' + DATENAME(mm,site_entrydate)
'Day and Month Posted' FORM site_directory
这个例⼦执⾏时,将返回如下的结果:
输出窗⼝复制保存
Site Name Day and Month Posted
………………………………………………………………………
Yahoo Friday - February
Microsoft Tuesday - June
Magicw3 Monday - June
(3 row(s) affected)
返回⽇期和时间范围
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论