SQL中CONVERT转化函数的用法

格式:
CONVERT(data_type,expression[,style])

说明:
此样式一般在时间类型(
datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.

例子:
SELECTCONVERT(varchar(30),getdate(),101) now
结果为:
now
---------------------------------------
|09/15/2001

===================================================================

style数字在转换时间时的含义如下:

------------------------------------------------------------------------------------------------------------
Style(2位表示年份)   |  Style(4位表示年份)   |   输入输出格式                                   
------------------------------------------------------------------------------------------------------------
0                               |100                           |   mon dd yyyy hh:miAM(或PM)             
------------------------------------------------------------------------------------------------------------
1                               |  101   美国                |   mm/dd/yy                                      
------------------------------------------------------------------------------------------------------------
2                               |  102    ANSI               |   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:mmmmAM(或PM)
------------------------------------------------------------------------------------------------------------
10                             |  110    美国                 |   mm-dd-yy                                        
------------------------------------------------------------------------------------------------------------
11                             |  111    日本                 |   yy/mm/dd                                       
------------------------------------------------------------------------------------------------------------
12                             |  112    ISO                  |   yymmdd                                          
------------------------------------------------------------------------------------------------------------
13                             |  113     欧洲默认值     |   dd mon yyyy hh:mi:ss:mmm(24小时制) 
------------------------------------------------------------------------------------------------------------
14                             |  114                            |   hh:mi:ss:mmm(24小时制)                   
------------------------------------------------------------------------------------------------------------
20                             |  120     ODBC 规范     |    yyyy-mm-dd hh:mi:ss(24小时制)        
------------------------------------------------------------------------------------------------------------
21                             |   121                           |    yyyy-mm-dd hh:mi:ss:mmm(24小时制)
------------------------------------------------------------------------------------------------------------

语句及查询结果:
SELECTCONVERT(varchar(100), GETDATE(), 0): 0516200610:57AM
SELECTCONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECTCONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECTCONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECTCONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECTCONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECTCONVERT(varchar(100), GETDATE(), 6): 160506
SELECTCONVERT(varchar(100), GETDATE(), 7): 0516, 06
SELECTCONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECTCONVERT(varchar(100), GETDATE(), 9): 0516200610:57:46:827AM
SELECTCONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECTCONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECTCONVERT(varchar(100), GETDATE(), 12): 060516
SELECTCONVERT(varchar(100), GETDATE(), 13): 1605200610:57:46:937
SELECTCONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECTCONVERT(varchar(100), GETDATE(), 20): 2006-05-1610:57:47
SELECTCONVERT(varchar(100), GETDATE(), 21): 2006-05-1610:57:47.157
SELECTCONVERT(varchar(100), GETDATE(), 22): 05/16/0610:57:47 AM
SELECTCONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECTCONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECTCONVERT(varchar(100), GETDATE(), 25): 2006-05-1610:57:47.250
SELECTCONVERT(varchar(100), GETDATE(), 100): 0516200610:57AM
SELECTCONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECTCONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECTCONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECTCONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECTCONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECTCONVERT(varchar(100), GETDATE(), 106): 16052006
SELECTCONVERT(varchar(100), GETDATE(), 107): 0516, 2006
SELECTCONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECTCONVERT(varchar(100), GETDATE(), 109): 0516200610:57:49:437AM
SELECTCONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECTCONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECTCONVERT(varchar(100), GETDATE(), 112): 20060516
SELECTCONVERT(varchar(100), GETDATE(), 113): 1605200610:57:49:513
SELECTCONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECTCONVERT(varchar(100), GETDATE(), 120): 2006-05-1610:57:49
SELECTCONVERT(varchar(100), GETDATE(), 121): 2006-05-1610:57:49.700
SELECTCONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
SELECTCONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 142710:57:49:907AM
SELECTCONVERT(varchar(100), GETDATE(), 131): 18/04/142710:57:49:920AM

说明:
使用
CONVERT

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

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。。

data_type

目标系统所提供的数据类型,包括
bigint 和 sql_variant。不能使用用户定义的数据类型。
length

ncharnvarcharcharvarcharbinaryvarbinary 数据类型的可选参数。

style

日期格式样式,借以将
datetimesmalldatetime 数据转换为字符数据(ncharnvarcharcharvarcharncharnvarchar 数据类型);或者字符串格式样式,借以将 floatrealmoneysmallmoney 数据转换为字符数据(ncharnvarcharcharvarcharncharnvarchar 数据类型)。

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将
datetimesmalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入
/输出**
-0100 (*)  默认值 mon dd yyyy hh:miAM(或 PM)
1101 美国 mm/dd/yyyy
2102 ANSI yy.mm.dd
3103 英国/法国 dd/mm/yy
4104 德国 dd.mm.yy
5105 意大利 dd-mm-yy
6106- dd mon yy
7107- mon dd, yy
8108- hh:mm:ss
-9109 (*)  默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10110 美国 mm-dd-yy
11111 日本 yy/mm/dd
12112 ISO yymmdd
-13113 (*)  欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14114- hh:mi:ss:mmm(24h)
-20120 (*)  ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
-21121 (*)  ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
-126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm(不含空格)
-130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM
-131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM



*    默认值(style 01009109131132012021121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime或 smalldatetimecharacter 数据的转换,输出格式如表中所示。对于从 floatmoneysmallmoneycharacter 数据的转换,输出等同于 style 2。对于从 realcharacter 数据的转换,输出等同于 style 1
****Hijri 是具有几种变化形式的日历系统,Microsoft® SQL Server™ 2000 使用其中的科威特算法。


重要  默认情况下,SQL Server 根据截止年份
2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。


当从
smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetimesmalldatetime 值进行转换时,可以通过使用适当的 charvarchar 数据类型长度来截断不需要的日期部分。

posted @ 2012-07-11 13:43  大智若简  阅读(220)  评论(0编辑  收藏  举报