在SQL Server 2017上设置日期时间变量值的T-SQL替换日期和月份

当我设置datetime变量值时,切换日期和月份。在SQL Server 2017上设置日期时间变量值的T-SQL替换日期和月份

例如:

declare @date datetime = '2017-12-02 14:56:24.000' 

select datepart(month,@date)

的结果应该是12,但它仅2的SQL Server 2017年2016年收益12

回答:

的问题相同的代码上存在的问题只存在在2016年相同的代码返回12.

它不依赖于SQL Server版本,只是不同DATEFORMAT设置:

SET DATEFORMAT ymd; 

declare @date datetime = '2017-12-02 14:56:24.000';

select datepart(month,@date);

-- 12

SET DATEFORMAT ydm;

declare @date2 datetime = '2017-12-02 14:56:24.000';

select datepart(month,@date2);

-- 2

Rextester Demo


为了避免这种情况,我建议用文化独立ISO-8601日期格式。

declare @date datetime = '2017-12-02T14:56:24.000'; 

Rextester Demo2

或marc_s建议的修改数据类型来DATETIME2

DECLARE @date DATETIME2 = '2017-12-02 14:56:24.000'; 

Rextester Demo3

以上是 在SQL Server 2017上设置日期时间变量值的T-SQL替换日期和月份 的全部内容, 来源链接: utcz.com/qa/257274.html

回到顶部