在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