查询结果为:
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)
mm/dd/yyyy
yy.mm.dd
dd/mm/yy
dd.mm.yy
dd-mm-yy
dd mon yy
mon dd,yy
hh:mm:ss
mon dd yyyy hh:mi:ss:mmmAM(or PM)
mm-dd-yy
yy/mm/dd
yymmdd
13 or 113
dd mon yyyy hh:mm:ss:mmm(24h)
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)
举例如下:
(
1
)
select convert(varchar,getdate(),100)
查询结果为:
11 26 2012 11:28AM
(
2
)
select convert(varchar,getdate(),101)
查询结果为:
11/26/2012
(
3
)
select convert(varchar,getdate(),1)
查询结果为:
11/26/12
(
4
)
select convert(varchar,getdate(),108)
查询结果为:
13:04:51
(
5
)
select convert(varchar,getdate(),111)
查询结果为:
2012/11/26
(
6
)
select convert(varchar,getdate(),120)
查询结果为:
2012-11-26 13:06:07
严格来说,
convert
不属于日期处理函数,同样也可以对其他数据类型进行转换,只是它经常被用于日期处理中,所以在使用该函数的时候,需要注意要先把日期格式的字符串转换为日期型,然后才能利用
convert
进行日期格式转换,否则就变成字符串转换为字符串,此时的
style
选项是无效的。
举例如下:
declare @dt datetime –-
声明变量
dt
的数据类型为
datetime
set @dt='2012-11-26' –-
为变量
dt
赋值,该日期为
2012
年
11
月
26
日
(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
值均无效。