Maison >Java >javaDidacticiel >Le stockage « java.sql.Timestamp » de Java dépend-il du fuseau horaire ?
Le stockage de java.sql.Timestamp est-il influencé par le fuseau horaire ?
Dans JDBC, le comportement de la méthode setTimestamp() avec java.sql. L'horodatage peut varier en fonction de la mise en œuvre du pilote.
L'horodatage du pilote Comportement :
La plupart des pilotes adhèrent aux règles décrites dans le javadoc pour setTimestamp (int parameterIndex, Timestamp x, Calendar cal). Si aucun objet Calendrier n'est fourni, le pilote utilise généralement le fuseau horaire de la machine virtuelle exécutant l'application.
Stockage de l'horodatage dans la base de données :
Lors de l'utilisation de setTimestamp( int paramètreIndex, Timestamp x) sans spécifier de calendrier, le pilote convertit l'horodatage en fuseau horaire de la VM avant de le stocker dans la base de données. Si la colonne de la base de données ne contient pas d'informations sur le fuseau horaire, cette conversion peut entraîner la perte des données de fuseau horaire.
Exemple :
Considérons un fuseau horaire local de GMT 2 et un horodatage UTC de « 2012-12-25 10:00:00 UTC ». Après stockage dans la base de données, l'horodatage apparaît sous la forme "2012-12-25 12:00:00" (GMT 2). S'il est récupéré par une application en GMT 0, l'horodatage sera interprété comme "2012-12-25 12:00:00 UTC."
Stockage des horodatages dans des fuseaux horaires spécifiques :
Pour stocker les horodatages dans un fuseau horaire spécifique, utilisez setTimestamp(int parameterIndex, Timestamp x, Calendar cal) avec l'instance de calendrier souhaitée (par exemple, Calendar.getInstance(TimeZone.getTimeZone("GMT")) pour GMT).
Récupération d'horodatage :
De même, lors de la récupération des horodatages, assurez-vous d'utiliser le même fuseau horaire que lors du stockage eux.
Utilisation de java.time.LocalDateTime avec JDBC 4.2 :
Dans les pilotes compatibles JDBC 4.2, vous pouvez utiliser java.time.LocalDateTime (et java.time. LocalTime) avec les types TIMESTAMP et TIME via les méthodes get/set/updateObject. Ces classes représentent le temps sans fuseaux horaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!