SQL 使用CONVERT函数 格式化日期

将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。

 

CAST 语法:

CAST    (expression AS data_type [ (length ) ] )
 

CONVERT 语法:

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

 

参数

expression

任何有效的表达式

data_type

目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)

length

指定目标数据类型长度的可选整数。默认值为 30。

style

指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。

返回类型

    返回转换为 data_type 的 expression。

Date 和 Time 样式

如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。

——————————————————————————————————————————————————————————————————————————————————

不带世纪数位 (yy)

带世纪数位 (yyyy) 标准 输入/输出 (3)
0 或 100 (1,2) 默认

mon dd yyyy hh:miAM(或 PM)

1 101 美国

mm/dd/yyyy

2 102 ANSI

yy.mm.dd

3 103 英国/法国

dd/mm/yyyy

4 104 德国

dd.mm.yy

5 105 意大利

dd-mm-yy

6 106 (1)

dd mon yy

7 107 (1)

mon dd, yy

8 108

hh:mi:ss

9 或 109 (1,2) 默认设置 + 毫秒

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

10 110 美国

mm-dd-yy

11 111 日本

yy/mm/dd

12 112 ISO

yymmdd

yyyymmdd

13 或 113 (1,2) 欧洲默认设置 + 毫秒

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

14 114

hh:mi:ss:mmm(24h)

20 或 120 (2) ODBC 规范

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

21 或 121 (2) ODBC 规范(带毫秒)

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

126 (4) ISO8601

yyyy-mm-ddThh:mi:ss.mmm(无空格)

127(6, 7) 带时区 Z 的 ISO8601。

yyyy-mm-ddThh:mi:ss.mmmZ(无空格)

130 (1,2) 回历 (5)

dd mon yyyy hh:mi:ss:mmmAM

131 (2) 回历 (5) dd/mm/yy hh:mi:ss:mmmAM

——————————————————————————————————————————————————————————————————————————————————

 

1 这些样式值将返回不确定的结果。包括所有 (yy)(不带世纪数位)样式和一部分 (yyyy)(带世纪数位)样式。

2 默认值(style010091091311320120 以及 21121)始终返回世纪数位 (yyyy)。

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

4 为用于 XML 而设计。对于从 datetime 或 smalldatetime 到字符数据的转换,其输出格式如上一个表所述。

5 回历是有多种变体的日历系统。SQL Server 使用科威特算法。

-- 默认
-- mm dd yyyy hh:mmPM/AM
SELECT CONVERT(varchar(100),GETDATE());
 
SELECT CONVERT(varchar(100),GETDATE(),0);
 
SELECT CONVERT(varchar(100),GETDATE(),100);
--
-- 美国
-- mm/dd/yy
SELECT CONVERT(varchar(100),GETDATE(),1);
-- mm/dd/yyyy
SELECT CONVERT(varchar(100),GETDATE(),101);
--
-- ANSI
-- yyyy.mm.dd
SELECT CONVERT(varchar(100),GETDATE(),2);
-- yy.mm.dd
SELECT CONVERT(varchar(100),GETDATE(),102);
--
-- 英国 / 法国
-- dd/mm/yy
SELECT CONVERT(varchar(100),GETDATE(),3);
-- dd/mm/yyyy
SELECT CONVERT(varchar(100),GETDATE(),103); 
--
-- 德国
-- dd.mm.yy
SELECT CONVERT(varchar(100),GETDATE(),4);
-- dd.mm.yyyy
SELECT CONVERT(varchar(100),GETDATE(),104); 
--
-- 意大利
-- dd-mm-yy
SELECT CONVERT(varchar(100),GETDATE(),5);
-- dd-mm-yyyy
SELECT CONVERT(varchar(100),GETDATE(),105); 
 
-- 
-- dd mm yy
SELECT CONVERT(varchar(100),GETDATE(),6);
-- dd mm yyyy
SELECT CONVERT(varchar(100),GETDATE(),106); 
 
--
-- mm dd, yy
SELECT CONVERT(varchar(100),GETDATE(),7);
-- mm dd, yyyy
SELECT CONVERT(varchar(100),GETDATE(),107); 
 
--
-- mon dd yyyy hh:mi:ss:mmmAM(或 PM)
SELECT CONVERT(varchar(100),GETDATE(),9);
 
SELECT CONVERT(varchar(100),GETDATE(),109); 
--
-- 美国
-- mm-dd-yy
SELECT CONVERT(varchar(100),GETDATE(),10);
-- mm-dd-yyyy
SELECT CONVERT(varchar(100),GETDATE(),110); 
--
-- 日本
-- yy/mm/dd
SELECT CONVERT(varchar(100),GETDATE(),11);
-- yyyy/mm/dd
SELECT CONVERT(varchar(100),GETDATE(),111); 
--
-- ISO
-- yymmdd
SELECT CONVERT(varchar(100),GETDATE(),12);
-- yyyymmdd
SELECT CONVERT(varchar(100),GETDATE(),112); 
--
-- 欧洲默认设置 + 毫秒
-- dd mon yyyy hh:mi:ss:mmm(24h)
SELECT CONVERT(varchar(100),GETDATE(),13);
 
SELECT CONVERT(varchar(100),GETDATE(),113); 
 
--
-- hh:mi:ss:mmm(24h)
SELECT CONVERT(varchar(100),GETDATE(),14);
 
SELECT CONVERT(varchar(100),GETDATE(),114); 
--
-- ODBC 规范
-- yyyy-mm-dd hh:mi:ss(24h)
SELECT CONVERT(varchar(100),GETDATE(),20);
 
SELECT CONVERT(varchar(100),GETDATE(),120); 
--
-- ODBC 规范(带毫秒)
-- yyyy-mm-dd hh:mi:ss.mmm(24h)
SELECT CONVERT(varchar(100),GETDATE(),21);
 
SELECT CONVERT(varchar(100),GETDATE(),121); 
--
-- ISO8601
-- yyyy-mm-ddThh:mi:ss.mmm(无空格)
SELECT CONVERT(varchar(100),GETDATE(),126);
--
-- 带时区 Z 的 ISO8601。
-- yyyy-mm-ddThh:mi:ss.mmmZ(无空格)
SELECT CONVERT(varchar(100),GETDATE(),127);
--
-- 回历 (5)
-- dd mon yyyy hh:mi:ss:mmmAM
SELECT CONVERT(varchar(100),GETDATE(),130);
--
-- 回历 (5)
-- dd/mm/yy hh:mi:ss:mmmAM
SELECT CONVERT(varchar(100),GETDATE(),131);
posted @ 2011-04-21 13:50  bobbychen  阅读(16028)  评论(1编辑  收藏  举报