Maison >Java >javaDidacticiel >« Java.sql.Timestamp » stocke-t-il les informations sur le fuseau horaire ?

« Java.sql.Timestamp » stocke-t-il les informations sur le fuseau horaire ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-24 19:09:13875parcourir

Does `java.sql.Timestamp` Store Time Zone Information?

Le fuseau horaire java.sql.Timestamp est-il spécifique ?

Contexte :

setTimestamp de JDBC( int ParameterIndex, Timestamp x) attribue un horodatage à une colonne de base de données sans spécifier explicitement le fuseau horaire. Cela soulève la question : Timestamp contient-il des informations sur le fuseau horaire ?

Réponse :

Non, java.sql.Timestamp ne contient pas intrinsèquement d'informations sur le fuseau horaire.

Explication :

Lors de l'appel de setTimestamp(...), le Le pilote JDBC s'appuie sur le fuseau horaire de la machine virtuelle exécutant l'application pour déterminer la date et l'heure à stocker. Cela signifie que la valeur stockée ne conserve pas les informations de fuseau horaire.

Exemple :

Considérez le scénario suivant :

  • Fuseau horaire de l'application : Inde Heure standard (IST)
  • Fuseau horaire de la base de données : IST
  • Valeur de l'horodatage : "20121225 10:00:00 UTC"

Dans ce cas, le pilote convertira l'heure UTC en IST (en fonction du fuseau horaire de la machine virtuelle) et la stockera sous "20121225 12:00:00 " dans la base de données.

Stockage des horodatages dans des Fuseaux horaires :

Pour stocker les horodatages dans un fuseau horaire spécifique, utilisez la méthode setTimestamp(int parameterIndex, Timestamp x, Calendar cal). Spécifiez un objet Calendrier avec le fuseau horaire souhaité pour garantir que l'horodatage est stocké en conséquence.

Considérations supplémentaires :

  • Récupération : Quand En récupérant un horodatage à l'aide de getTimestamp(...), le pilote utilisera le fuseau horaire de la machine virtuelle pour interpréter la valeur, sauf si un objet Calendar est spécifié.
  • java.time.LocalDateTime : Les pilotes compatibles JDBC 4.2 prennent en charge java.time.LocalDateTime pour les données TIMESTAMP. Cela permet un mappage direct des horodatages sans conversions de fuseau horaire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn