SET DATEFORMAT (Transact-SQL)

設定解譯 date、smalldatetime、datetime、datetime2 和 datetimeoffset 字元字串之月份、日期與年份日期部分的順序。

如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。如需日期和時間資料類型與函數常用的資訊和範例,請參閱<使用日期和時間資料>。

主題連結圖示Transact-SQL 語法慣例

語法

SET DATEFORMAT { format | @format_var } 

引數

  • format | **@**format_var
    這是日期部分的順序。有效的參數為 mdy、dmy、ymd、ydm、myd 和 dym。這個引數可以是 Unicode 或轉換成 Unicode 的雙位元組字集 (DBCS)。U.S. English 的預設值是 mdy。如需所有支援語言的預設 DATEFORMAT,請參閱 sp_helplanguage (Transact-SQL)

備註

DATEFORMAT ydm 不支援 date、datetime2 和 datetimeoffset 資料類型。

就 datetime 和 smalldatetime 值與 date、datetime2 和 datetimeoffset 值而言,DATEFORMAT 設定在解譯字元字串的作用方面可能會不同,端視字串格式而定。這個設定會影響字元字串轉換成日期值以便儲存在資料庫中的解譯方式。但是,它並不會影響儲存在資料庫中之日期資料類型值的顯示或儲存格式。

某些字元字串格式 (例如 ISO 8601) 的解譯就與 DATEFORMAT 設定無關。如需有關如何使用 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