SSMS DATEADD 使用错误的区域格式

沙格鲁

出于某种原因,只有 DATEADD 函数使用区域格式 yyyy-dd-mm 而不是正常的 yyyy-mm-dd 用于其他所有内容。我不明白为什么会发生这种情况,我什至不是美国人。

对我来说 DATEADD(day, 7, '2021-09-01') 作为一列返回 2021-01-16 00:00:00.000 的日期时间,而不是预期的 2021-09-08 00:00:00.000。

有谁知道这是否是具有 DATEADD 功能的 SSMS 中的已知问题?我使用的是 SQL Server Management Studio v17.9.1

拉努

这是不是与SQL Server Management Studio中(SSMS),这只是一个IDE问题SQL服务器(你使用SSMS 17告诉我们就像是在告诉我们你在使用Office 2016时问什么版本的Windows的你”重新使用),也不是 SQL Server,而是您的文字字符串。首先,您真正应该使用的DATEADD是强类型的日期和时间值;那么你总能得到你期望的价值。

至于你的文字串,但是,格式yyyy-MM-dd明确的,因为它是使用(旧)时解释不同的方式datetimesmalldatetime数据类型。DATEADD(and DATEDIFF) 将基于字符串的数据类型隐式转换为datetime; 并且根据您的语言设置解释此类转换(意味着您的格式不明确)。

因此,解决方法是使用明确的格式。对于 SQL 服务器,这些是yyyyMMddyyyy-MM-ddThh:mm:ss.nnnnnnn因此,无论您的语言设置如何DATEADD(day, 7, '20210901')都将返回 2021 年 9 月 8 日

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章