Mes excuses pour la question extrêmement basique, je pense que je connais la réponse, mais je voudrais vérifier:Demande de vérification - Comment les bases de données et Java stockent et gèrent les fuseaux horaires?
Lorsque des zones se référant à temps et la façon dont ils sont généralement stockés dans une base de données et dans un java.util.Date:
- lors de l'enregistrement d'un champ de date dans une base de données, il est fuseau horaire agnostique (par exemple, enregistre toujours en UTC)
- lorsque vous utilisez une date Java objet la date est fuseau horaire aussi agnostique
- fuseau horaire est depeneded que lorsque dates de formatage et d'analyse (DB et Java)
- Si vous utilisez Java - il utilisera le user.timezone JVM au format/analyser les dates
- Si vous utilisez Java sous Windows - Java prendra ce à partir des paramètres régionaux automatiquement
- Le fuseau horaire de base de données (et il est le fuseau horaire de la machine) est sans rapport avec le client Java JDBC
- le fuseau horaire du serveur de base de données est pertinente que pour l'analyse syntaxique SQL directe et formattage
Mes questions sont les suivantes:
- Toutes les hypothèses ci-dessus sont-elles correctes? certains sont? tout incorect?
- Existe-t-il une référence/source officielle qui vérifie cela plus "officiellement"?
Donc j'avais raison, le fuseau horaire est pour le formatage, et toutes les dates sont sauvegardées en "UTC" soit par définition, soit par convention ... n'est-ce pas? –
En Java, ils sont tous UTC. Dans les systèmes de base de données, la méthode de stockage varie, mais généralement quelque chose comme 2010-12-25 12:30:15 est stocké et récupéré exactement comme il est écrit, indépendamment des fuseaux horaires. Vous pouvez essayer avec HSQLDB 2.0.1, qui prend en charge TIMESTAMP WITH TIME ZONE ainsi que sans fuseau horaire et voir les résultats. – fredt