1.字符转换为日期时,Style的使用

1 Style=101时,表示日期字符串为:mm/dd/yyyy格式
2     SELECT CONVERT(datetime,'11/1/2003',101)
3     --结果:2003-11-01 00:00:00.000
4 
5 Style=101时,表示日期字符串为:dd/mm/yyyy格式
6   SELECT CONVERT(datetime,'11/1/2003',103)
7   --结果:2003-01-11 00:00:00.000

2./*== 日期转换为字符串 ==*/

1 DECLARE @dt datetime
 2 SET @dt='2003-1-11'
 3 
 4 Style=101时,表示将日期转换为:mm/dd/yyyy 格式
 5   SELECT CONVERT(varchar,@dt,101)
 6   --结果:01/11/2003
 7 
 8 Style=103时,表示将日期转换为:dd/mm/yyyy 格式
 9   SELECT CONVERT(varchar,@dt,103)
10   --结果:11/01/2003

3./*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/
  SELECT CONVERT(varchar,'2003-1-11',101)
  --结果:2003-1-11

1 /*--说明
 2 SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响
 3 但不影响明确指定了style的CONVERT处理。
 4 --*/
 5 
 6 --示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。
 7 --设置输入日期顺序为 日/月/年
 8 SET DATEFORMAT DMY
 9 
10 --不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响
11 SELECT CONVERT(datetime,'2-1-2005')
12 --结果: 2005-01-02 00:00:00.000
13 
14 --指定Style参数的CONVERT转换不受SET DATEFORMAT的影响
15 SELECT CONVERT(datetime,'2-1-2005',101)
16 --结果: 2005-02-01 00:00:00.000
17 GO


1 /*--说明
 2 如果输入的日期包含了世纪部分,则对日期进行解释处理时
 3 年份的解释不受SET DATEFORMAT设置的影响。
 4 --*/
 5 
 6 --示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。
 7 DECLARE @dt datetime
 8 
 9 --设置SET DATEFORMAT为:月日年
10 SET DATEFORMAT MDY
11 
12 --输入的日期中指定世纪部分
13 SET @dt='01-2002-03'
14 SELECT @dt
15 --结果: 2002-01-03 00:00:00.000
16 
17 --输入的日期中不指定世纪部分
18 SET @dt='01-02-03'
19 SELECT @dt
20 --结果: 2003-01-02 00:00:00.000
21 GO


1 /*--说明
 2 如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时
 3 将忽略SET DATEFORMAT的设置。
 4 --*/
 5 
 6 --示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。
 7 DECLARE @dt datetime
 8 
 9 --设置SET DATEFORMAT为:月日年
10 SET DATEFORMAT MDY
11 SET @dt='010203'
12 SELECT @dt
13 --结果: 2001-02-03 00:00:00.000
14 
15 --设置SET DATEFORMAT为:日月年
16 SET DATEFORMAT DMY
17 SET @dt='010203'
18 SELECT @dt
19 --结果: 2001-02-03 00:00:00.000
20 
21 --输入的日期中包含日期分隔符
22 SET @dt='01-02-03'
23 SELECT @dt
24 --结果: 2003-02-01 00:00:00.000


1 --以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。
 2 USE master
 3 
 4 --设置会话的语言环境为: English
 5 SET LANGUAGE N'English'
 6 SELECT 
 7 DATENAME(Month,GETDATE()) AS [Month],
 8 DATENAME(Weekday,GETDATE()) AS [Weekday],
 9 CONVERT(varchar,GETDATE(),109) AS [CONVERT]
10 /*--结果:
11 Month         Weekday        CONVERT
12 ------------- -------------- -------------------------------
13 March         Tuesday        Mar 15 2005 8:59PM
14 --*/
15 
16 --设置会话的语言环境为: 简体中文
17 SET LANGUAGE N'简体中文'
18 SELECT 
19 DATENAME(Month,GETDATE()) AS [Month],
20 DATENAME(Weekday,GETDATE()) AS [Weekday],
21 CONVERT(varchar,GETDATE(),109) AS [CONVERT]
22 /*--结果
23 Month        Weekday          CONVERT
24 -----------  -------------    ------------------
25 03           星期五            03  3 2017  3:43:48:307PM
26 --*/

 


TRANSLATE with x

English

Arabic

Hebrew

Polish

Bulgarian

Hindi

Portuguese

Catalan

Hmong Daw

Romanian

Chinese Simplified

Hungarian

Russian

Chinese Traditional

Indonesian

Slovak

Czech

Italian

Slovenian

Danish

Japanese

Spanish

Dutch

Klingon

Swedish

English

Korean

Thai

Estonian

Latvian

Turkish

Finnish

Lithuanian

Ukrainian

French

Malay

Urdu

German

Maltese

Vietnamese

Greek

Norwegian

Welsh

Haitian Creole

Persian

 

 

TRANSLATE with

COPY THE URL BELOW

Back

EMBED THE SNIPPET BELOW IN YOUR SITE


Enable collaborative features and customize widget: Bing Webmaster Portal

Back