如果使用 java.sql.Time 对象或 java.sql.Types.TIME JDBC 类型设置参数,可以配置如何将 java.sql.Time 值发送到服务器,即作为 SQL Server time 类型还是 datetime 类型发送。

使用以下方法之一时适用此方案:

可以通过使用 sendTimeAsDatetime 连接属性配置如何发送 java.sql.Time 值。有关详细信息,请参阅设置连接属性

您可以通过编程使用 SQLServerDataSource.setSendTimeAsDatetime 修改 sendTimeAsDatetime 连接属性的值。

早于 SQL Server 2008 的 SQL Server 版本不支持 time 数据类型,因此使用 java.sql.Time 的应用程序一般将 java.sql.Time 值作为 datetimesmalldatetime SQL Server 数据类型存储。

如果您想要在处理 java.sql.Time 值时使用 datetimesmalldatetime SQL Server 数据类型,则应该将 sendTimeAsDatetime 连接属性设置为 true。如果您想要在处理 java.sql.Time 值时使用 time SQL Server 数据类型,则应该将 sendTimeAsDatetime 连接属性设置为 false

请注意,在将 java.sql.Time 值发送给其数据类型还存储日期的参数时,默认日期会有所不同,具体取决于 java.sql.Time 值是作为 datetime (1/1/1970) 还是 time (1/1/1900) 值发送。有关将数据发送到 SQL Server 时的数据转换的详细信息,请参阅使用日期和时间

在 SQL Server JDBC Driver 3.0 中,默认情况下 sendTimeAsDatetime 为 true。在将来的发行版中,默认情况下可以将 sendTimeAsDatetime 连接属性设置为 false。

为了确保无论 sendTimeAsDatetime 连接属性的默认值为什么您的应用程序都能正常工作,可以:

请参阅

了解 JDBC 驱动程序数据类型