SET DATEFORMAT (Transact-SQL)

適用于:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure Synapse Analytics AnalyticsPlatform System (PDW)

設定月份、日期與年份日期部分的順序,以解譯日期字元字串。 這些字串的類型為 datesmalldatetimedatetimedatetime2datetimeoffset

如需所有 Transact-SQL 日期和時間資料類型與函式的概觀,請參閱日期和時間資料類型與函式 (Transact-SQL)

Transact-SQL 語法慣例

Syntax

SET DATEFORMAT { format | @format_var }   

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

format | @format_var
這是日期部分的順序。 有效的參數為 mdydmyymdydmmyddym。 這個引數可以是 Unicode 或轉換成 Unicode 的雙位元組字集 (DBCS)。 美國美國英文的預設值是 mdy。 如需所有支援語言的預設 DATEFORMAT,請參閱 sp_helplanguage (Transact-SQL)

備註

datedatetime2datetimeoffset 資料類型不支援 DATEFORMAT ydm

DATEFORMAT 設定會針對日期資料類型以不同方式解譯字元字串,視其字串格式而定。 例如,datetimesmalldatetime 解譯可能不符合 datedatetime2datetimeoffset。 DATEFORMAT 會影響字元字串針對資料庫轉換成日期值的解譯方式。 但是,它並不會影響日期資料類型值的顯示,或其在資料庫中的儲存格式。

某些字元字串格式 (例如 ISO 8601) 的解譯就與 DATEFORMAT 設定無關。

SET DATEFORMAT 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

SET DATEFORMAT 會覆寫 SET LANGUAGE 的隱含日期格式設定。

權限

需要 public 角色的成員資格。

範例

下列範例會使用不同的日期字串當做工作階段的輸入,並搭配相同的 DATEFORMAT 設定。

-- Set date format to day/month/year.  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '31/12/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: 2008-12-31 09:01:01.123  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '12/31/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.  
  
GO  

另請參閱

SET 陳述式 (Transact-SQL)