配置如何将 java.sql.Time 值发送到服务器

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

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

- SQLServerCallableStatement.registerOutParameter(int, int)

- SQLServerCallableStatement.registerOutParameter(int, int, int)

- SQLServerCallableStatement.setTime

- SQLServerPreparedStatement.setTime

- SQLServerCallableStatement.setObject

- SQLServerPreparedStatement.setObject

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

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

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

如果您想要在处理 java.sql.Time 值时使用 datetime 和 smalldatetimeSQL Server 数据类型，则应该将 sendTimeAsDatetime 连接属性设置为 true。如果您想要在处理 java.sql.Time 值时使用 timeSQL 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 连接属性的默认值为什么您的应用程序都能正常工作，可以：

- 在使用 timeSQL Server 数据类型时使用 java.sql.Time。

- 在使用 datetime、smalldatetime 和 datetime2SQL Server 数据类型时使用 java.sql.Timestamp。

# 请参阅

了解 JDBC 驱动程序数据类型
发送有关本主题的反馈至 Microsoft。

© 2012 Microsoft。保留所有权利。