將某種數(shù)據(jù)類型的表達式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST 和 CONVERT 提供相似的功能。
CAST 語法:
CAST (expression AS data_type [ (length ) ] )
CONVERT 語法:
CONVERT (data_type [ (length ) ] ,expression [ ,style ] )
參數(shù)
任何有效的表達式。
目標(biāo)數(shù)據(jù)類型。這包括 xml、bigint 和 sql_variant。不能使用別名數(shù)據(jù)類型。有關(guān)可用數(shù)據(jù)類型的詳細信息,請參閱數(shù)據(jù)類型 (Transact-SQL)。
指定目標(biāo)數(shù)據(jù)類型長度的可選整數(shù)。默認值為 30。
指定 CONVERT 函數(shù)如何轉(zhuǎn)換 expression 的整數(shù)表達式。如果樣式為 NULL,則返回 NULL。該范圍是由 data_type 確定的。有關(guān)詳細信息,請參閱“備注”部分。
返回類型
返回轉(zhuǎn)換為 data_type 的 expression。
如果 expression 為 date 或 time 數(shù)據(jù)類型,則 style 可以為下表中顯示的值之一。其他值作為 0 進行處理。SQL Server 使用科威特算法來支持阿拉伯樣式的日期格式。
——————————————————————————————————————————————————————————————————————————————————
不帶世紀(jì)數(shù)位 (yy) | 帶世紀(jì)數(shù)位 (yyyy) | 標(biāo)準(zhǔn) | 輸入/輸出 (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) | 默認設(shè)置 + 毫秒 | 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) | 歐洲默認設(shè)置 + 毫秒 | dd mon yyyy hh:mi:ss:mmm(24h) | |
14 | 114 | hh:mi:ss:mmm(24h) | |
20 或 120 (2) | ODBC 規(guī)范 | yyyy-mm-dd hh:mi:ss(24h) | |
21 或 121 (2) | ODBC 規(guī)范(帶毫秒) | yyyy-mm-dd hh:mi:ss.mmm(24h) | |
126 (4) | ISO8601 | yyyy-mm-ddThh:mi:ss.mmm(無空格) | |
127(6, 7) | 帶時區(qū) 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 這些樣式值將返回不確定的結(jié)果。包括所有 (yy)(不帶世紀(jì)數(shù)位)樣式和一部分 (yyyy)(帶世紀(jì)數(shù)位)樣式。
2 默認值(style0 或 100、9 或 109、13 或 113、20 或 120 以及 21 或 121)始終返回世紀(jì)數(shù)位 (yyyy)。
3 轉(zhuǎn)換為 datetime 時輸入;轉(zhuǎn)換為字符數(shù)據(jù)時輸出。
4 為用于 XML 而設(shè)計。對于從 datetime 或 smalldatetime 到字符數(shù)據(jù)的轉(zhuǎn)換,其輸出格式如上一個表所述。
5 回歷是有多種變體的日歷系統(tǒng)。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);
--
-- 歐洲默認設(shè)置 + 毫秒
-- 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 規(guī)范
-- yyyy-mm-dd hh:mi:ss(24h)
SELECT CONVERT(varchar(100),GETDATE(),20);
SELECT CONVERT(varchar(100),GETDATE(),120);
--
-- ODBC 規(guī)范(帶毫秒)
-- 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);
--
-- 帶時區(qū) 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);