Configurar el modo en que los valores java.sql.Time se envían al servidor
Si utiliza un objeto java.sql.Time o el tipo de JDBC java.sql.Types.TIME para establecer un parámetro, podrá configurar la forma en que el valor java.sql.Time se envía al servidor; es decir, como un tipo time o un tipo datetime de SQL Server.
Este escenario se aplica al utilizar uno de los siguientes métodos:
- SQLServerCallableStatement.registerOutParameter(int, int)
- SQLServerCallableStatement.registerOutParameter(int, int, int)
- SQLServerCallableStatement.setTime
- SQLServerPreparedStatement.setTime
- SQLServerCallableStatement.setObject
- SQLServerPreparedStatement.setObject
Puede configurar la forma de enviar el valor java.sql.Time mediante el uso de la propiedad de conexión sendTimeAsDatetime. Para obtener más información, vea Establecer las propiedades de conexión.
Puede modificar mediante programación el valor de la propiedad de conexión sendTimeAsDatetime con SQLServerDataSource.setSendTimeAsDatetime.
Las versiones de SQL Server anteriores a SQL Server 2008 no admiten el tipo de datos time, por ello, las aplicaciones que utilicen java.sql.Time por lo general almacenan valores de java.sql.Time como tipos de datos datetime o smalldatetime de SQL Server.
Si desea utilizar los tipos de datos datetime y smalldatetime de SQL Server cuando trabaje con valores java.sql.Time, debería establecer la propiedad de conexión sendTimeAsDatetime en true. Si desea utilizar el tipo de datos de SQL Server time cuando trabaje con valores java.sql.Time, debería establecer la propiedad de conexión sendTimeAsDatetime en false.
Tenga en cuenta que al enviar valores java.sql.Time a un parámetro cuyo tipo de datos también pueda almacenar fechas, esos valores predeterminados de fecha serán distintos en función de si el valor java.sql.Time se envía como un valor datetime (1/1/1970) o un valor time (1/1/1900). Para obtener más información sobre las conversiones de datos al enviar datos a SQL Server, vea Usar datos de fecha y hora.
En el controlador JDBC 3.0 de SQL Server, sendTimeAsDatetime de forma predeterminada tiene el valor TRUE. En versiones futuras, la propiedad de conexión sendTimeAsDatetime puede establecerse de forma predeterminada en FALSE.
Para asegurarse de que su aplicación sigue funcionando como se había previsto independientemente del valor predeterminado de la propiedad de conexión sendTimeAsDatetime puede:
- Utilizar java.sql.Time al trabajar con el tipo de datos timeSQL Server.
- Utilizar java.sql.Timestamp al trabajar con los tipos de datos datetime, smalldatetime y datetime2 de SQL Server.