您的位置:首页 > 数据库

Sql server2005中如何格式化时间日期

2011-03-06 00:27 549 查看
执行下面格式化时间和日期的T-SQL脚本,在数据库查询分析器中示范了SQLServer中的大多数可用的时间数据格式。首先我们开始转换sql的一些可用的时间格式。

SELECTconvert(varchar,getdate(),100)--monddyyyyhh:mmAM(orPM)
--Oct2200811:01AM
SELECTconvert(varchar,getdate(),101)--mm/dd/yyyy-10/02/2008
SELECTconvert(varchar,getdate(),102)--yyyy.mm.dd--2008.10.02
SELECTconvert(varchar,getdate(),103)--dd/mm/yyyy
SELECTconvert(varchar,getdate(),104)--dd.mm.yyyy
SELECTconvert(varchar,getdate(),105)--dd-mm-yyyy
SELECTconvert(varchar,getdate(),106)--ddmonyyyy
SELECTconvert(varchar,getdate(),107)--mondd,yyyy
SELECTconvert(varchar,getdate(),108)--hh:mm:ss
SELECTconvert(varchar,getdate(),109)--monddyyyyhh:mm:ss:mmmAM(orPM)
--Oct2200811:02:44:013AM
SELECTconvert(varchar,getdate(),110)--mm-dd-yyyy
SELECTconvert(varchar,getdate(),111)--yyyy/mm/dd
SELECTconvert(varchar,getdate(),112)--yyyymmdd
SELECTconvert(varchar,getdate(),113)--ddmonyyyyhh:mm:ss:mmm
--02Oct200811:02:07:577
SELECTconvert(varchar,getdate(),114)--hh:mm:ss:mmm(24h)
SELECTconvert(varchar,getdate(),120)--yyyy-mm-ddhh:mm:ss(24h)
SELECTconvert(varchar,getdate(),121)--yyyy-mm-ddhh:mm:ss.mmm
SELECTconvert(varchar,getdate(),126)--yyyy-mm-ddThh:mm:ss.mmm
--2008-10-02T10:52:47.513
--利用字符串函数创建不同的日期格式
SELECTreplace(convert(varchar,getdate(),111),'/','')--yyyymmdd
SELECTconvert(varchar(7),getdate(),126)--yyyy-mm
SELECTright(convert(varchar,getdate(),106),8)--monyyyy
go

--通用的日期转换函数
CREATEFUNCTIONdbo.fnFormatDate(@DatetimeDATETIME,@FormatMaskVARCHAR(32))
RETURNSVARCHAR(32)
AS
BEGIN
DECLARE@StringDateVARCHAR(32)

SET@StringDate=@FormatMask

IF(CHARINDEX('YYYY',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'YYYY',DATENAME(YY,@Datetime))

IF(CHARINDEX('YY',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'YY',RIGHT(DATENAME(YY,@Datetime),2))

IF(CHARINDEX('Month',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'Month',DATENAME(MM,@Datetime))

IF(CHARINDEX('MON',@StringDateCOLLATESQL_Latin1_General_CP1_CS_AS)>0)

SET@StringDate=REPLACE(@StringDate,'MON',LEFT(UPPER(DATENAME(MM,@Datetime)),3))

IF(CHARINDEX('Mon',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'Mon',LEFT(DATENAME(MM,@Datetime),3))

IF(CHARINDEX('MM',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'MM',RIGHT('0'+CONVERT(VARCHAR,DATEPART(MM,@Datetime)),2))

IF(CHARINDEX('M',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'M',CONVERT(VARCHAR,DATEPART(MM,@Datetime)))

IF(CHARINDEX('DD',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'DD',right('0'+DATENAME(DD,@Datetime),2))

IF(CHARINDEX('D',@StringDate)>0)

SET@StringDate=REPLACE(@StringDate,'D',DATENAME(DD,@Datetime))

RETURN@StringDate

END
GO


以前每次格式化日期都要通过字符串转换函数是转换,比较麻烦,像这样写成函数调用起来就方便多了:

示例:

SELECTdbo.fnFormatDate(getdate(),'MM/DD/YYYY')--03/06/2011


.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;}

.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;}

参考资料:http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

版权声明:允许转载,转载时请务必以超链接形式
标明文章原始出处、作者信息和本声明。否则将追究法律责任。

/article/7048417.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: