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
代码:
[code]SELECTGETDATE()ASVal,Convert(char(11),GETDATE(),120)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
[/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');--两日期差异秒的运算
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');--两日期差异秒的运算
相关文章推荐
- sql server学习笔录5(T-SQL 日期处理总结)
- SQL日期处理函数
- SQL常用日期处理
- java日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类
- Extjs 中处理日期的方法总结
- 日期参数在SQL与FineReport中的处理
- 几个SQL日期处理
- 日期处理常用总结
- SQL:数据库日期处理
- 关于ADO+SQL /Access里面查询日期时间类型语句的一点总结
- sap abap 日期处理总结
- 日期处理总结
- Sql Server2008 Transact-SQL 新兵器学习总结之-用户定义表类型和日期,时间数据类型
- java中的日期处理类总结
- SET DATEFORMAT对日期处理的影响.sql
- SQL日期格式化处理
- oracle trunc 函数处理日期格式,日期类型很有用的几个sql
- spark sql 怎样处理日期类型
- SQL/PLSQL:日期函数总结_20170822