T-SQL 日期轉換說明 , 相當實用

分類:T-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。

clip_image001

重要 預設情況下,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:

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) , getda
te(), 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