当前位置:文档之家› SQL 中使用CONVERT转日期格式

SQL 中使用CONVERT转日期格式

将某种数据类型的表达式显式转换为另一种数据类型。

由于某些需求经常用到取日期格式的不同.现以下可在SQL Server中将日期格式化.
SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将datetime 或smalldatetime 转换为字符数据的style 值。

给style 值加100,可获得包括世纪数位的四位年份(yyyy)。

不带世纪数位(yy) 带世纪数位(yyyy)
标准
输入/输出**
- 0 或100 (*) 默认值mon dd yyyy hh:miAM(或PM)
1 101 美国mm/dd/yyyy
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:mmmAM(或PM)
10 110 美国mm-dd-yy
11 111 日本yy/mm/dd
12 112 ISO yymmdd
- 13 或113 (*) 欧洲默认值+ 毫秒dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或120 (*) ODBC 规范yyyy-mm-dd hh:mm:ss[.fff]
- 21 或121 (*) ODBC 规范(带毫秒)yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特dd/mm/yy hh:mi:ss:mmmAM
* 默认值(style 0 或100、9 或109、13 或113、20 或120、21 或121)始终返回世纪数位(yyyy)。

** 当转换为datetime 时输入;当转换为字符数据时输出。

*** 专门用于XML。

对于从datetime 或smalldatetime 到character 数据的转换,输出格式如表中所示。

对于从float、money 或smallmoney 到character 数据的转换,输出等同于style 2。

对于从real 到character 数据的转换,输出等同于style 1。

重要默认情况下,SQL Server 根据截止年份2049 解释两位数字的年份。

即,两位数字的年份49 被解释为2049,而两位数字的年份50 被解释为1950。

许多客户端应用程序(例如那些基于OLE 自动化对象的客户端应用程序)都使用2030 作为截止年份。

SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改SQL Server 所使用的截止年份并对日期进行一致性处理。

然而最安全的办法是指定四位数字年份。

当从smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。

当从datetime 或smalldatetime 值进行转换时,可以通过使用适当的char 或varchar 数据类型长度来截断不需要的日期部分。

下表显示了从float 或real 转换为字符数据时的style 值。

0(默认值)最大为6 位数。

根据需要使用科学记数法。

1 始终为8 位值。

始终使用科学记数法。

2 始终为16 位值。

始终使用科学记数法。

在下表中,左列表示从money 或smallmoney 转换为字符数据时的style 值。

值输出
0(默认值)小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如4235.98。

1 小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如3,510.92。

2 小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如4235.9819。

使用CONVERT:
CONVERT (data_type[(length)], expression [, style])
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),"-","")," ",""),":","") 20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004
select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004
select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004
select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004
select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004
select CONVERT(varchar(12) , getdate(), 108 )
11:06:08
select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1
select CONVERT(varchar(12) , getdate(), 110 ) 09-12-2004
select CONVERT(varchar(12) , getdate(), 113 ) 12 09 2004 1
select CONVERT(varchar(12) , getdate(), 114 ) 11:06:08.177。

相关主题