SET DATEFORMAT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

设置用于解释日期字符串的月、日和年日期部分的顺序。 这些字符串属于类型“date”、“smalldatetime”、“datetime”、“datetime2”或“datetimeoffset”

有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)

Transact-SQL 语法约定

语法

SET DATEFORMAT { format | @format_var }   

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

format | @format_var
日期部分的顺序。 有效参数为 mdydmyymdydmmyddym。 可以是 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 的隐式日期格式设置。

权限

要求 公共 角色具有成员身份。

示例

下例使用不同的日期字符串作为具有相同 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)