MS SQL Server中的CONVERT日期格式化大全
CONVERT將某種數(shù)據(jù)類型的表達式顯式轉換為另一種數(shù)據(jù)類型。由于某些需求經(jīng)常用到取日期格式的不同.現(xiàn)以下可在SQL Server中 將日期格式化.
SQL Server 支持使用科威特算法的阿拉伯樣式中的數(shù)據(jù)格式。
在表中,左側的兩列表示將 datetime 或 smalldatetime 轉換為字符數(shù)據(jù)的 style 值。給 style 值加 100,可獲得包括世紀數(shù)位的四位年份 (yyyy)。
不帶世紀數(shù)位 (yy)帶世紀數(shù)位 (yyyy)標準輸入/輸出**-0 或 100 (*) 默認值mon dd yyyy hh:miAM(或 PM)1101美國mm/dd/yyyy2102ANSIyy.mm.dd3103英國/法國dd/mm/yy4104德國dd.mm.yy5105意大利dd-mm-yy6106-dd mon yy7107-mon dd, yy8108-hh:mm:ss-9 或 109 (*) 默認值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)10110美國mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13 或 113 (*) 歐洲默認值 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)14114-hh:mi:ss:mmm(24h)-20 或 120 (*) ODBC 規(guī)范yyyy-mm-dd hh:mm:ss[.fff]-21 或 121 (*) ODBC 規(guī)范(帶毫秒)yyyy-mm-dd hh:mm:ss[.fff]-126(***)ISO8601yyyy-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)始終返回世紀數(shù)位 (yyyy)。** 當轉換為 datetime 時輸入;當轉換為字符數(shù)據(jù)時輸出。*** 專門用于 XML。對于從 datetime 或 smalldatetime 到 character 數(shù)據(jù)的轉換,輸出格式如表中所示。對于從 float、money 或 smallmoney 到 character 數(shù)據(jù)的轉換,輸出等同于 style 2。對于從 real 到 character 數(shù)據(jù)的轉換,輸出等同于 style 1。
重要默認情況下,SQL Server 根據(jù)截止年份 2049 解釋兩位數(shù)字的年份。即,兩位數(shù)字的年份 49 被解釋為 2049,而兩位數(shù)字的年份 50 被解釋為 1950。許多客戶端應用程序(例如那些基于 OLE 自動化對象的客戶端應用程序)都使用 2030 作為截止年份。SQL Server 提供一個配置選項('兩位數(shù)字的截止年份'),借以更改 SQL Server 所使用的截止年份并對日期進行一致性處理。然而最安全的辦法是指定四位數(shù)字年份。
當從 smalldatetime 轉換為字符數(shù)據(jù)時,包含秒或毫秒的樣式將在這些位置上顯示零。當從 datetime 或 smalldatetime 值進行轉換時,可以通過使用適當?shù)?char 或 varchar 數(shù)據(jù)類型長度來截斷不需要的日期部分。
下表顯示了從 float 或 real 轉換為字符數(shù)據(jù)時的 style 值。
值輸出0(默認值)最大為 6 位數(shù)。根據(jù)需要使用科學記數(shù)法。1始終為 8 位值。始終使用科學記數(shù)法。2始終為 16 位值。始終使用科學記數(shù)法。
在下表中,左列表示從 money 或 smallmoney 轉換為字符數(shù)據(jù)時的 style 值。
值輸出0(默認值)小數(shù)點左側每三位數(shù)字之間不以逗號分隔,小數(shù)點右側取兩位數(shù),例如 4235.98。1小數(shù)點左側每三位數(shù)字之間以逗號分隔,小數(shù)點右側取兩位數(shù),例如 3,510.92。2小數(shù)點左側每三位數(shù)字之間不以逗號分隔,小數(shù)點右側取四位數(shù),例如 4235.9819。
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
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) , getdate(), 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
