SET DATEFORMAT (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
設定月份、日期與年份日期部分的順序,以解譯日期字元字串。 這些字串的類型為 date、smalldatetime、datetime、datetime2 或 datetimeoffset。
如需所有 Transact-SQL 日期和時間資料類型與函式的概觀,請參閱日期和時間資料類型與函式 (Transact-SQL)。
語法
SET DATEFORMAT { format | @format_var }
引數
format | @format_var
這是日期部分的順序。 有效的參數為 mdy、dmy、ymd、ydm、myd 和 dym。 這個引數可以是 Unicode 或轉換成 Unicode 的雙位元組字集 (DBCS)。 美國美國英文的預設值是 mdy。 如需所有支援語言的預設 DATEFORMAT,請參閱 sp_helplanguage (Transact-SQL)。
備註
date、datetime2 和 datetimeoffset 資料類型不支援 DATEFORMAT ydm。
DATEFORMAT 設定會針對日期資料類型以不同方式解譯字元字串,視其字串格式而定。 例如,datetime 和 smalldatetime 解譯可能不符合 date、datetime2 或 datetimeoffset。 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