【发布时间】:2018-05-16 12:57:39
【问题描述】:
当我设置datetime 变量值时,日期和月份会被切换。
例如:
declare @date datetime = '2017-12-02 14:56:24.000'
select datepart(month,@date)
结果应该是 12 但它是 2。问题只存在于 SQL Server 2017 上。2016 上的相同代码返回 12。
【问题讨论】:
-
使用对语言或其他连接设置不敏感的格式 - 正如@lad2025 所建议的那样。要更好地理解这一点,请阅读this
-
你为什么使用 datetime 而不是 datetime2?你不会有这个问题吗?
-
应该停止使用
DATETIME并使用DATETIME2(n)数据类型的许多 原因之一 - 在 SQL Server 2008 中引入 - 代替.该数据类型确实 NOT 显示相同的行为 - 日期时间始终按照您的预期正确解释 -
使用 datetime2 并没有改变我的测试。
-
是的。使用您接受的答案中的 rextester rextester.com/LDX87286
标签: sql-server tsql datetime sql-server-2016 sql-server-2017