适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
设置用于解释日期字符串的月、日和年日期部分的顺序。 这些字符串属于类型“date”、“smalldatetime”、“datetime”、“datetime2”或“datetimeoffset”。
有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。
语法
SET DATEFORMAT { format | @format_var }
参数
格式 | @format_var
日期部分的顺序。 有效参数为 mdy、dmy、ymd、ydm、myd 和 dym。 可以是 Unicode,也可以是转换为 Unicode 的双字节字符集 (DBCS)。 美国英语默认值为 mdy。 关于所有支持语言的默认 DATEFORMAT 情况,请参见 sp_helplanguage(Transact-SQL)。
注解
DATEFORMAT ydm 不支持日期、datetime2 和 datetimeoffset 数据类型。
DATEFORMAT该设置可能会根据字符串格式对日期数据类型的字符字符串有不同的解释。 例如,“datetime”和“smalldatetime”的解释可能与“date”、“datetime2”或“datetimeoffset”不一致。 DATEFORMAT 影响字符串在转换为数据库日期值时的解释。 它不会影响日期数据类型值的显示,也不会影响数据库中的存储格式。
某些字符串格式,例如 ISO 8601,是独立 DATEFORMAT 于设置解释的。
SET DATEFORMAT设置是在执行或运行时设置的,而不是在分析时设置的。
SET DATEFORMAT覆盖隐式日期格式设置。SET LANGUAGE
权限
要求 公共 角色具有成员身份。
示例
下例使用不同的日期字符串作为具有相同 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