JDBC 编码到 sql 服务器 smalldatetime

JDBC encoding to sql server smalldatetime

我正在尝试执行其中一个参数类型为 smalldatetime 的存储过程。过去,我总是将 datetime2datetime 字段编码为字符串,并且效果很好。我正在使用 Microsoft JDBC Driver

我在尝试对 smalldatetime 参数使用 string/nvarchar 时遇到此错误。

Error converting data type nvarchar to smalldatetime. Query: EXEC dg.FooBar ?, ?, ?, ?, ? Parameters: [[123, 1, 2099-01-01, 1, DG TEST]]

查看 microsoft documentation 它建议使用 java.sql.Timestamp class。将我的 java 代码更改为 Timestamp.valueOf(LocalDate.of(2099, 1, 1).atStartOfDay()) 我得到了类似的错误。

Error converting data type datetime2 to smalldatetime. Query: EXEC dg.FooBar ?, ?, ?, ?, ? Parameters: [[123, 1, 2099-01-01 00:00:00.0, 1, DG TEST]]

感谢任何帮助。

smalldatetime 支持的日期范围是 1900-01-01 到 2079-06-06

https://docs.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql

您正试图通过 2099-01-01 00:00:00.0,它超出了范围。