您的位置:首页 > 数据库

T-SQL 日期处理总结

2012-04-03 11:54 323 查看
明天放假,今天刚好整理一下,对于日期的格式、推算、运算是平时常用的,简单易错。

1.T-SQL日期格式转换

由原始的值2012-04-0310:57:06.127转换成以下20种常用的格式

2012-04-03
20120403
2012.04.03
04/03/2012
03/04/2012
03.04.2012
03-04-2012
03Apr2012
Apr03,2012
10:57:06
Apr 32012
04-03-2012
2012/04/03
20120403
03Apr2012
10:57:06:127
2012-4-3
2012年04月03日
2012年4月3日
2012-04-0310:57:06:127

代码:

--由2012-04-0310:23:10.177转换成2012-04-03


[code]SELECTGETDATE()ASVal,Convert(char(11),GETDATE(),120)ASNeedVal

 


--由2012-04-0310:23:10.177转换成20120403


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),112)ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012.04.03


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),102)ASNeedVal


 


--由2012-04-0310:23:10.177转换成04/03/2012月日年


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),101)ASNeedVal


 


--由2012-04-0310:23:10.177转换成03/04/2012日月年


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),103)ASNeedVal


 


--由2012-04-0310:23:10.177转换成03.04.2012日月年


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),104)ASNeedVal


 


--由2012-04-0310:23:10.177转换成03-04-2012日月年


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),105)ASNeedVal


 


--由2012-04-0310:23:10.177转换成03Apr2012日月年


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),106)ASNeedVal


 


--由2012-04-0310:23:10.177转换成Apr03,2012


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),107)ASNeedVal


 


--由2012-04-0310:23:10.177转换成10:44:02


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),108)ASNeedVal


 


--由2012-04-0310:23:10.177转换成Apr32012


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),109)ASNeedVal


 


--由2012-04-0310:23:10.177转换成04-03-2012


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),110)ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012/04/03


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),111)ASNeedVal


 


--由2012-04-0310:23:10.177转换成20120403


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),112)ASNeedVal


 


--由2012-04-0310:23:10.177转换成03Apr2012


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),113)ASNeedVal


 


--由2012-04-0310:23:10.177转换成10:45:45:447


selectGETDATE()ASVal,CONVERT(varchar(12),getdate(),114)ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012-4-3


SELECTGETDATE()ASVal,REPLACE(CONVERT(varchar(10),GETDATE(),120),N'-0','-')ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012年04月03日


SELECTGETDATE()ASVal,STUFF(STUFF(CONVERT(char(8),GETDATE(),112),5,0,N'年'),8,0,N'月')+N'日'ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012年4月3日


SELECTGETDATE()ASVal,DATENAME(Year,GETDATE())+N'年'+CAST(DATEPART(Month,GETDATE())ASvarchar)+N'月'+DATENAME(Day,GETDATE())+N'日'ASNeedVal


 


--由2012-04-0310:23:10.177转换成2012-04-0310:23:10.177


SELECTGETDATE()ASVal,CONVERT(char(11),GETDATE(),120)+CONVERT(char(12),GETDATE(),114)ASNeedVal

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

2.T-SQL日期推算

给定日期,得到该年的第一天和最后一天

给定日期所在季度的第一天和最后一天

给定日期所在月份的第一天或最后一天

给定日期所在周的取星期几的日期,星期天做为一周的第1天

昨天

前天

明天

后天

上一年

下一年

上季度

下季度

上月

下月  
上周

下周

前一小时

后一小时

前一分钟

后一分钟

前一秒

后一秒

代码:

--给定日期,得到该年的第一天和最后一天


[code]SELECTCONVERT(char(5),GETDATE(),120)+'1-1'ASFDATE,CONVERT(char(5),GETDATE(),120)+'12-31'LDTAE

 


--给定日期所在季度的第一天和最后一天,两种方法算最后一天


SELECTCONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE())-2,GETDATE()),120)+'1')ASFDATE


,CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE()),GETDATE()),120)


+CASEWHENDATEPART(Quarter,GETDATE())in(1,4)


THEN'31'ELSE'30'END)ASLDATE






SELECTCONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE())-2,GETDATE()),120)+'1')ASFDATE


,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,GETDATE())*3-Month(GETDATE()),GETDATE()),120)+'1')ASLDATE


 


--给定日期所在月份的第一天和最后一天


SELECTCONVERT(datetime,CONVERT(char(8),GETDATE(),120)+'1')ASFDATE,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,GETDATE()),120)+'1')ASLDATE


 


--给定日期所在周的取星期几的日期,星期天做为一周的第1天


SELECTDATEADD(Day,0-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,2-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,3-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,4-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,5-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


SELECTDATEADD(Day,6-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())


 


--昨天


SELECTDATEADD(Day,-1,GETDATE())


--前天


SELECTDATEADD(Day,-2,GETDATE())


--明天


SELECTDATEADD(Day,1,GETDATE())


--后天


SELECTDATEADD(Day,2,GETDATE())


 


--上一年


SELECTDATEADD(year,-1,GETDATE())


 


--下一年


SELECTDATEADD(year,1,GETDATE())


 


--上季度


SELECTDATEADD(quarter,-1,GETDATE())


 


--下季度


SELECTDATEADD(quarter,1,GETDATE())




--上月


SELECTDATEADD(month,-1,GETDATE())


 


--下月


SELECTDATEADD(month,1,GETDATE())




--上周


SELECTDATEADD(week,-1,GETDATE())


 


--下周


SELECTDATEADD(week,1,GETDATE())


 


--前一小时


SELECTDATEADD(hour,-1,GETDATE())


 


--后一小时


SELECTDATEADD(hour,1,GETDATE())


 


--前一分钟


SELECTDATEADD(minute,-1,GETDATE())


 


--后一分钟


SELECTDATEADD(minute,1,GETDATE())


 


--前一秒


SELECTDATEADD(second,-1,GETDATE())


 


--后一秒


SELECTDATEADD(second,1,GETDATE())

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

3.T-SQL日期运算

SELECTDATEDIFF(year,'2012-04-03','2013-04-03');--两日期差异年的运算

SELECTDATEDIFF(quarter,'2012-04-03','2013-04-03');--两日期差异季度的运算

SELECTDATEDIFF(day,'2012-04-03','2013-04-03');--两日期差异日的运算

SELECTDATEDIFF(week,'2012-04-03','2013-04-03');--两日期差异周的运算

SELECTDATEDIFF(hour,'2012-04-03','2013-04-03');--两日期差异小时的运算

SELECTDATEDIFF(minute,'2012-04-03','2013-04-03');--两日期差异分钟的运算

SELECTDATEDIFF(second,'2012-04-03','2013-04-03');--两日期差异秒的运算
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: