Configurazione della modalità di invio dei valori java.sql.Time

Scaricare il driver JDBC

Se si usa un oggetto java.sql.Time o il tipo JDBC java.sql.Types.TIME per impostare un parametro, è possibile configurare la modalità di invio del valore java.sql.Time al server come tipo SQL Server time o datetime.

Questo scenario si applica quando si utilizza uno dei seguenti metodi:

SendTimeAsDatetime

La modalità di invio del valore java.sql.Time può essere configurata tramite la proprietà di connessione sendTimeAsDatetime. Per altre informazioni, vedere Impostazione delle proprietà di connessione.

Il valore della proprietà di connessione sendTimeAsDatetime può essere modificato a livello di codice con SQLServerDataSource.setSendTimeAsDatetime.

Poiché le versioni di SQL Server precedenti a SQL Server 2008 (10.0.x) non supportano il tipo di dati time, le applicazioni che usano java.sql.Time in genere archiviano i valori java.sql.Time come tipo di dati datetime o smalldatetime di SQL Server.

Per usare i tipi di dati datetime e smalldatetime di SQL Server quando vengono usati valori java.sql.Time, è consigliabile impostare la proprietà di connessione sendTimeAsDatetime su true. Per usare il tipo di dati time di SQL Server quando vengono usati valori java.sql.Time, è consigliabile impostare la proprietà di connessione sendTimeAsDatetime su false.

Se si inviano valori java.sql.Time in un parametro il cui tipo di dati può archiviare anche la data, tali date predefinite sono diverse a seconda che il valore java.sql.Time venga inviato come valore datetime (1/1/1970) o time (1/1/1900). Per altre informazioni sulle conversioni di dati quando si inviano dati a SQL Server, vedere Uso di dati relativi a data e ora.

Nel driver JDBC Driver 3.0 di SQL Server sendTimeAsDatetime è impostata su true per impostazione predefinita. In una versione successiva la proprietà di connessione sendTimeAsDatetime può essere impostata su False per impostazione predefinita.

Per assicurarsi che l'applicazione continui a funzionare come previsto, indipendentemente dal valore predefinito della proprietà di connessione sendTimeAsDatetime, è possibile:

  • Usare java.sql.Time in caso di uso del tipo di dati time di SQL Server.
  • Usare java.sql.Timestamp quando vengono usati i tipi di dati datetime, smalldatetime e datetime2SQL di SQL Server.

SendTimeAsDatetime deve essere impostata su false per le colonne crittografate poiché le colonne crittografate non supportano la conversione di time in datetime. A partire da Microsoft JDBC Driver 6.0 per SQL Server, la classe SQLServerConnection ha i due metodi seguenti per impostare/ottenere il valore della proprietà sendTimeAsDatetime.

  public boolean getSendTimeAsDatetime()
  public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue)

Vedi anche

Informazioni sui tipi di dati del driver JDBC