一、回顧一下CONVERT()的文法格式:CONVERT (<data_ type>[ length ], <expression> [, style])
二、這裡注重說明一下style的含義:style 是将DATATIME 和SMALLDATETIME 資料轉換為字元串時所選用的由SQL Server 系統提供的轉換樣式編号,不同的樣式編号有不同的輸出格式;一般在時間類型(datetime,smalldatetime)與字元串類型(nchar,nvarchar,char,varchar)互相轉換的時候才用到.
三、下表是SQL Server 系統提供的轉換樣式編号:
不帶世紀數位 (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* | Hijri**** | dd mon yyyy hh:mi:ss:mmmAM |
- | 131* | Hijri**** | 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。
**** Hijri 是具有幾種變化形式的月曆系統,Microsoft? SQL Server? 2000 使用其中的科威特算法。
四、不帶世紀數位的執行個體代碼(注釋的表示非有效的樣式号):
複制代碼代碼如下:
SELECT CONVERT(varchar(100), GETDATE(), 0) AS Style0
SELECT CONVERT(varchar(100), GETDATE(), 1) AS Style1
SELECT CONVERT(varchar(100), GETDATE(), 2) AS Style2
SELECT CONVERT(varchar(100), GETDATE(), 3) AS Style3
SELECT CONVERT(varchar(100), GETDATE(), 4) AS Style4
SELECT CONVERT(varchar(100), GETDATE(), 5) AS Style5
SELECT CONVERT(varchar(100), GETDATE(), 6) AS Style6
SELECT CONVERT(varchar(100), GETDATE(), 7) AS Style7
SELECT CONVERT(varchar(100), GETDATE(), 8) AS Style8
SELECT CONVERT(varchar(100), GETDATE(), 9) AS Style9
SELECT CONVERT(varchar(100), GETDATE(), 10) AS Style10
SELECT CONVERT(varchar(100), GETDATE(), 11) AS Style11
SELECT CONVERT(varchar(100), GETDATE(), 12) AS Style12
SELECT CONVERT(varchar(100), GETDATE(), 13) AS Style13
SELECT CONVERT(varchar(100), GETDATE(), 14) AS Style14
--SELECT CONVERT(varchar(100), GETDATE(), 15) AS Style15
--SELECT CONVERT(varchar(100), GETDATE(), 16) AS Style16
--SELECT CONVERT(varchar(100), GETDATE(), 17) AS Style17
--SELECT CONVERT(varchar(100), GETDATE(), 18) AS Style18
--SELECT CONVERT(varchar(100), GETDATE(), 19) AS Style19
SELECT CONVERT(varchar(100), GETDATE(), 20) AS Style21
SELECT CONVERT(varchar(100), GETDATE(), 21) AS Style21
SELECT CONVERT(varchar(100), GETDATE(), 22) AS Style22
SELECT CONVERT(varchar(100), GETDATE(), 23) AS Style23
SELECT CONVERT(varchar(100), GETDATE(), 24) AS Style24
SELECT CONVERT(varchar(100), GETDATE(), 25) AS Style25
--SELECT CONVERT(varchar(100), GETDATE(), 26) AS Style26
--SELECT CONVERT(varchar(100), GETDATE(), 27) AS Style27
--SELECT CONVERT(varchar(100), GETDATE(), 28) AS Style28
--SELECT CONVERT(varchar(100), GETDATE(), 29) AS Style29
--SELECT CONVERT(varchar(100), GETDATE(), 30) AS Style30
--SELECT CONVERT(varchar(100), GETDATE(), 31) AS Style31
運作結果:
五、帶世紀數位的執行個體代碼(注釋的表示非有效的樣式号):
複制代碼代碼如下:
SELECT CONVERT(varchar(100), GETDATE(), 100) AS Style100
SELECT CONVERT(varchar(100), GETDATE(), 101) AS Style101
SELECT CONVERT(varchar(100), GETDATE(), 102) AS Style102
SELECT CONVERT(varchar(100), GETDATE(), 103) AS Style103
SELECT CONVERT(varchar(100), GETDATE(), 104) AS Style104
SELECT CONVERT(varchar(100), GETDATE(), 105) AS Style105
SELECT CONVERT(varchar(100), GETDATE(), 106) AS Style106
SELECT CONVERT(varchar(100), GETDATE(), 107) AS Style107
SELECT CONVERT(varchar(100), GETDATE(), 108) AS Style108
SELECT CONVERT(varchar(100), GETDATE(), 109) AS Style109
SELECT CONVERT(varchar(100), GETDATE(), 110) AS Style110
SELECT CONVERT(varchar(100), GETDATE(), 111) AS Style111
SELECT CONVERT(varchar(100), GETDATE(), 112) AS Style112
SELECT CONVERT(varchar(100), GETDATE(), 113) AS Style113
SELECT CONVERT(varchar(100), GETDATE(), 114) AS Style114
--SELECT CONVERT(varchar(100), GETDATE(), 115) AS Style115
--SELECT CONVERT(varchar(100), GETDATE(), 116) AS Style116
--SELECT CONVERT(varchar(100), GETDATE(), 117) AS Style117
--SELECT CONVERT(varchar(100), GETDATE(), 118) AS Style118
--SELECT CONVERT(varchar(100), GETDATE(), 119) AS Style119
SELECT CONVERT(varchar(100), GETDATE(), 120) AS Style121
SELECT CONVERT(varchar(100), GETDATE(), 121) AS Style121
--SELECT CONVERT(varchar(100), GETDATE(), 122) AS Style122
--SELECT CONVERT(varchar(100), GETDATE(), 123) AS Style123
--SELECT CONVERT(varchar(100), GETDATE(), 124) AS Style124
--SELECT CONVERT(varchar(100), GETDATE(), 125) AS Style125
SELECT CONVERT(varchar(100), GETDATE(), 126) AS Style126
SELECT CONVERT(varchar(100), GETDATE(), 127) AS Style127
--SELECT CONVERT(varchar(100), GETDATE(), 128) AS Style128
--SELECT CONVERT(varchar(100), GETDATE(), 129) AS Style129
SELECT CONVERT(varchar(100), GETDATE(), 130) AS Style130
SELECT CONVERT(varchar(100), GETDATE(), 131) AS Style131
運作結果:
SQL将datetime轉化為字元串并截取字元串
複制代碼代碼如下:
select sr_child as '孩子姓名', sr_parents as '家長姓名' ,ss_updatetime as '配置設定時間', left(ss_updatetime,CHARINDEX(' ',ss_updatetime)-1),SUBSTRING(CONVERT(CHAR(19), ss_updatetime, 120),1,10)as '轉換格式并截取後的時間'from dbo.tb_sell_resources,dbo.tb_sell_selldetails where sr_id = ss_rsid and ss_qdstate <> 1 order by ss_updatetime
轉:http://www.jb51.net/article/49174.htm