Avant d'écrire un Java Date de SQL de la colonne TIMESTAMP, ne JDBC traduire la date de la JVM de fuseau horaire pour la session de base de données de fuseau horaire?

Avant d'écrire un Java Date SQL TIMESTAMP colonne, ne JDBC traduire la date à partir de la machine virtuelle Java de fuseau horaire à celui de la session de base de données?

Par exemple, supposons que la machine virtuelle Java de fuseau horaire est UTC et la session de base de données de fuseau horaire est UTC-5. Si un programme Java tente de stocker 2000-01-01 00:00:00 en la passant à PreparedStatement#setTimestamp(de type int Timestamp), selon le JDBC standard, la base de données du magasin TIMESTAMP '2000-01-01 00:00:00' ou TIMESTAMP '1999-12-31 19:00:00'?

  • Les fuseaux horaires sont (ou devraient être) uniquement pour la présentation des dates, pas pour le stockage. Si aucune traduction ne devrait se produire. Toutefois, c'est de conjecturer, pas de réponse.
  • Donc RedGrittyBrick, vous vous attendez à la base de données pour stocker TIMESTAMP '2000-01-01 00:00:00'?
  • RedGrittyBrick, fuseau horaire est pertinent pour les dates si vous stockez le fuseau horaire. Un SQL de la colonne TIMESTAMP ne stocke pas le temps de la zone, bien que, si elle fait sens pour stocker des dates indépendant de la localisation (qui est, par rapport au fuseau horaire UTC).
  • RedGrittyBrick, le principal problème que j'essaie de comprendre, c'est comment, le cas échéant, JDBC standard nécessite un pilote JDBC de la mise en œuvre d'appliquer un fuseau horaire à une date à laquelle il transfère la date entre le JDBC client et le serveur de base de données.
  • Voir aussi: stackoverflow.com/questions/2858182/...
InformationsquelleAutor Derek Mahar | 2010-11-08