【发布时间】:2020-04-09 13:28:48
【问题描述】:
当我在本地 SQL Server 实例上运行以下 SQL 时:
DECLARE @t DATETIME2 = '2019-12-12 00:00:00'
我收到以下错误:
无法将 @t 转换为 System.Data.SqlClient.SqlParameter 对象。指定的文字无法转换为 DateTime2(System.Data.SqlDbType),因为它使用了不受支持的日期/时间格式。使用一种受支持的日期/时间格式。字面值:2019-12-12 00:00:00
修复它的唯一方法是在日期和时间之间添加“T”
DECLARE @t DATETIME2 = '2019-12-12T00:00:00'
同时,该脚本在我的生产服务器上运行得非常好(不添加“T”)。
我试图找出不同之处,但没有发现任何可能影响行为的东西:
- 两台服务器上的排序规则相同 -
SQL_Latin1_General_CP1_CI_AS - 语言相同 - 英语(美国)
- 服务器版本:LOCAL 为 Microsoft SQL Server 2017 Developer Edition (64-bit) v14.0.2027 RTM; REMOTE 是 Microsoft SQL Server 2017 Enterprise Edition:基于内核的许可(64 位)v14.0.1000 RTM
- 主机操作系统:本地是 Windows 10 Pro; REMOTE 是 Windows Server 2016 Datacenter
有人能解释一下,为什么我在本地收到错误吗?
【问题讨论】:
-
如何执行该查询?从错误消息来看,您似乎有一个执行它的前端应用程序。请将其包含在您的问题中
-
无法在 SSMS 中本地重现 Win10/SQL Server 2017 上的问题 - 工作正常。我同意@Squirrel:似乎您没有在 SSMS 中执行此操作,而是从某个应用程序执行此操作 - 也许该应用程序中的某些内容会导致此问题。 SQL Server 本身应该没问题
-
@Squirrel 我在 SSMS 中运行它。找到了原因和解决方案,感谢 Dan Guzman
标签: sql-server sql-server-2017