Vous n'êtes pas identifié(e).

#1 30/10/2019 18:57:35

dev.isc84
Membre

valeur renvoyée par now() différente selon d'ou vient l'appel

Bonjour,
je viens de m'appercevoir d'une chose que je n'arrive pas à expliquer:
Je crée une table :
CREATE TABLE public.temp_test_zone(
    col1 timestamp without time zone DEFAULT now(),
    col2 timestamp with time zone DEFAULT now(),
    libelle text
);


Il est 17h00 heure française.


Depuis une ligne de commande via psql, je fais un insert into temp_test_zone(libelle) values ('test1');

J'ai comme résultat col2 : 16:00:00.000000+00 et col1 16:00:00.000000
(même résultat depuis un pgadmin sur un poste client)


Je fais cette même requête depuis un connecteur java JDBC:
J'ai comme résultat col2 : 16:00:00.000000+00 et col1 17:00:00.000000


Auriez vous une explication au fait que depuis un psql la valeur without time zone soit différente de celle obtenue depuis un connecteur JDBC?
Je précise que le linux sur lequel tourne postgres est à l'heure française aussi.

Merci pour vos éclaircissements!

Hors ligne

#2 30/10/2019 20:42:30

rjuju
Administrateur

Re : valeur renvoyée par now() différente selon d'ou vient l'appel

J'imagine que le client ou driver JDBC modifie la time zone côté client, ou qu'un réglage de time zone spécifique existe pour les informations de connexion côté jdbc ou quand vous testez avec psql:

# select now()::timestamp;
            now             
----------------------------
 2019-10-30 19:41:01.146024
(1 row)

# set timezone to 'GMT';
SET

# select now()::timestamp;
            now             
----------------------------
 2019-10-30 18:41:10.433325


Cela étant dit, stocker des colonnes sans la time zone est le meilleur moyen pour finir par le regretter amèrement à un moment ou à un autre.

Hors ligne

#3 31/10/2019 11:20:22

dev.isc84
Membre

Re : valeur renvoyée par now() différente selon d'ou vient l'appel

Merci pour le retour

Hors ligne

Pied de page des forums