SQL SERVER中的日期转换

SQL Server中,通过使用getdate()函数可以查询当前日期,例如:

select getdate()

查询结果为:

2012-11-26 11:01:38.030

该值默认为datetime类型,其中包含了年、月、日、时、分、秒众多信息,并精确到了毫秒级。但如果在查询数据时只想取“年月日”,该如何截取呢?这时候可以使用convert函数,将某种数据类型转换为另一种数据类型。

convert的具体语法如下:

convert ( data_type [ ( length ) ] , expression [ , style ] )

参数含义如下:

Ø date_type:转换后的数据类型,如果没有精度定义需要,length可以省略;

Ø expression:要转换数据类型的SQL Server表达式;

Ø style:定义数据类型转换时的格式,下面列举几种常用的格式

 

年份表示(2位)

年份表示(4位)

输入/输出格式

-

0 or 100

mon dd yyyy hh:miAM(or PM)

1

101

mm/dd/yyyy

2

102

yy.mm.dd

3

103

dd/mm/yy

4

104

dd.mm.yy

5

105

dd-mm-yy

6

106

dd mon yy

7

107

mon dd,yy

8

108

hh:mm:ss

9

109

mon dd yyyy hh:mi:ss:mmmAM(or PM)

10

110

mm-dd-yy

11

111

yy/mm/dd

12

112

yymmdd

-

13 or 113

dd mon yyyy hh:mm:ss:mmm(24h)

14

114

hh:mi:ss:mmm(24h)

-

20 or 120

yyyy-mm-dd hh:mi:ss(24h) 

-

21 or 121

yyyy-mm-dd hh:mi:ss:mmm(24h) 

 

举例如下:

1select convert(varchar,getdate(),100)

查询结果为:

11 26 2012 11:28AM

 

2select convert(varchar,getdate(),101)

查询结果为:

11/26/2012

 

3select convert(varchar,getdate(),1)

查询结果为:

11/26/12

 

4select convert(varchar,getdate(),108)

查询结果为:

13:04:51

 

5select convert(varchar,getdate(),111)

查询结果为:

2012/11/26

 

6select convert(varchar,getdate(),120)

查询结果为:

2012-11-26 13:06:07

 

严格来说,convert不属于日期处理函数,同样也可以对其他数据类型进行转换,只是它经常被用于日期处理中,所以在使用该函数的时候,需要注意要先把日期格式的字符串转换为日期型,然后才能利用convert进行日期格式转换,否则就变成字符串转换为字符串,此时的style选项是无效的。

举例如下:

declare @dt datetime –-声明变量dt的数据类型为datetime

set @dt='2012-11-26' –-为变量dt赋值,该日期为20121126

 

(1)将该日期转换为“dd/mm/yy”格式,设置style=103

select convert(varchar,@dt,103)

查询结果为:

26/11/2012

 

2)将该日期转换为“yy/mm/dd”格式,设置style=111

select convert(varchar,@dt,111)

查询结果为:

2012/11/26

以上两个例子可以转换成功。

 

再看下面的例子:

select convert(varchar,'2012-11-26',103)

查询结果为:

2012-11-26

该转换并未成功,因为在此处'2012-11-26'是字符串类型,对其设置任何style值均无效。

posted on 2013-01-22 08:54  momingliu11  阅读(414)  评论(0编辑  收藏  举报