Configuration du mode d’envoi des valeurs java.sql.Time

Télécharger le pilote JDBC

Si vous utilisez un objet java.sql.Time ou le type JDBC java.sql.Types.TIME pour définir un paramètre, vous pouvez configurer si la valeur java.sql.Time est envoyée au serveur sous le type SQL Server time ou datetime.

Ce scénario s'applique lors de l'utilisation de l'une des méthodes suivantes :

SendTimeAsDatetime

Vous pouvez configurer comment la valeur java.sql.Time est envoyée avec la propriété de connexion sendTimeAsDatetime. Pour plus d’informations, consultez Définition des propriétés de connexion.

Vous pouvez modifier par programmation la valeur de la propriété de connexion sendTimeAsDatetime avec SQLServerDataSource.setSendTimeAsDatetime.

Les versions de SQL Server antérieures à SQL Server 2008 (10.0.x) ne prennent pas en charge le type de données time. Ainsi, les applications utilisant java.sql.Time stockent généralement les valeurs java.sql.Time sous le type de données SQL Server datetime ou smalldatetime.

Si vous voulez utiliser les types de données SQL Serverdatetime et smalldatetime avec des valeurs java.sql.Time, vous devez définir la propriété de connexion sendTimeAsDatetime sur true. Si vous voulez utiliser le type de données SQL Server time avec des valeurs java.sql.Time, vous devez définir la propriété de connexion sendTimeAsDatetime sur false.

Quand vous envoyez des valeurs java.sql.Time dans un paramètre dont le type de données peut également stocker la date, les dates par défaut diffèrent selon que la valeur java.sql.Time est envoyée en tant que valeur DateHeure (1/1/1970) ou heure (1/1/1900). Pour plus d’informations sur les conversions de données lors de l’envoi de données à un serveur SQL Server, consultez Utilisation des données de date et d’heure.

Dans la version 3.0 de SQL Server JDBC Driver, sendTimeAsDatetime a la valeur true par défaut. Dans une prochaine version, il se peut que la propriété de connexion sendTimeAsDatetime soit définie sur false par défaut.

Pour garantir que votre application continue à fonctionner comme prévu quelle que soit la valeur par défaut de la propriété de connexion sendTimeAsDatetime, vous disposez des possibilités suivantes :

  • Utilisez java.sql.Time avec le type de données timeSQL Server.
  • Utilisez java.sql.Timestamp avec les types de données SQL Serverdatetime, smalldatetime et datetime2.

SendTimeAsDatetime doit avoir la valeur false pour les colonnes chiffrées, car celles-ci ne prennent pas en charge la conversion de time en datetime. À compter de la version 6.0 de Microsoft JDBC Driver pour SQL Server, la classe SQLServerConnection possède les deux méthodes suivantes pour définir/obtenir la valeur de la propriété sendTimeAsDatetime.

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

Voir aussi

Présentation des types de données du pilote JDBC