Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se usar um objeto java.sql.Time ou o tipo JDBC java.sql.Types.TIME para definir um parâmetro, pode configurar como o valor java.sql.Time é enviado ao servidor; quer como o tipo time SQL Server ou como o tipo datetime.
Este cenário aplica-se quando se utiliza um dos seguintes métodos:
- SQLServerCallableStatement.registerOutParameter(int, int)
- SQLServerCallableStatement.registerOutParameter(int, int, int)
- SQLServerCallableStatement.setTime
- SQLServerPreparedStatement.setTime
- SQLServerCallableStatement.setObject
- SQLServerPreparedStatement.setObject
EnviarTempoComoDataHora
Pode configurar como o valor java.sql.Time é enviado usando a propriedade de conexão sendTimeAsDatetime. Para mais informações, consulte Definir as Propriedades de Ligação.
Pode modificar programaticamente o valor da propriedade de ligação sendTimeAsDatetime com SQLServerDataSource.setSendTimeAsDatetimetime.
As versões do SQL Server anteriores ao SQL Server 2008 (10.0.x) não suportam o tipo de dado time , pelo que as aplicações que usam java.sql.Time normalmente armazenam valores de java.sql.Time como datatimetime ou smalldatetime SQL Server.
Se quiseres usar os tipos de dados data-hora e smalldatetimedo SQL Server ao trabalhar com valores java.sql.Time, deves definir a propriedade de ligação sendTimeAsDatetime como true. Se quiser usar o tipo de dado SQL Server time ao trabalhar com valores java.sql.Time, deve definir a propriedade de ligação sendTimeAsDatetime como false.
Ao enviar valores de java.sql.Time para um parâmetro cujo tipo de dado também pode armazenar a data, as datas padrão são diferentes dependendo de o valor de java.sql.Time ser enviado como datetime (1/1/1970) ou time (1/1/1900). Para mais informações sobre conversões de dados ao enviar dados para um SQL Server, consulte Utilização de Dados de Data e Hora.
No Driver JDBC 3.0 do SQL Server, sendTimeAsDatetime é verdadeiro por defeito. Numa versão futura, a propriedade de ligação sendTimeAsDatetime pode ser definida como falsa por defeito.
Para garantir que a sua aplicação continua a funcionar como esperado, independentemente do valor padrão da propriedade de ligação sendTimeAsDatetime , pode:
- Use java.sql.Time ao trabalhar com o tipo de dado SQL Server Time.
- Use java.sql.Timestamp ao trabalhar com os tipos de dados datetime, smalldatetime e datetime2 do SQL Server.
SendTimeAsDatetime deve ser falso para colunas encriptadas, pois as colunas encriptadas não suportam a conversão de hora para data. A partir do Microsoft JDBC Driver 6.0 para SQL Server, a classe SQLServerConnection tem os seguintes dois métodos para definir/obter o valor da propriedade sendTimeAsDatetime.
public boolean getSendTimeAsDatetime()
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue)