Lorsque j'ai créé la table, une colonne d'horodatage sans fuseau horaire a été créée. Tout le temps importé est dans UTC
. Maintenant, je veux ajouter explicitement les informations de fuseau horaire, et j'ai modifié la colonne
ALTER TABLE review ALTER COLUMN review_time TYPE TIMESTAMP WITH TIME ZONE USING review_time AT TIME ZONE 'UTC';
La sélection des données existantes n'affiche pas les informations de fuseau horaire ajoutées
review_time
2017-07-28 02:25:44
2017-07-28 03:10:35
2017-07-28 03:11:32
2017-07-28 03:11:35
2017-07-28 03:11:38
2017-07-28 03:11:41
2017-07-28 18:54:54
Dois-je exécuter une instruction UPDATE
sur les données existantes, et si oui, quelle est la syntaxe?
La sortie qui manque des informations de fuseau horaire est due à l'application elle-même (SQLWorkbenchJ). L'interrogation à partir de psql
affichera le fuseau horaire
mydb # SELECT review_time FROM review;
review_time
------------------------
2017-08-20 08:00:02+08
2017-07-27 00:45:33+08
2017-07-27 00:45:37+08
2017-07-28 02:24:03+08
2017-07-28 02:24:27+08
2017-07-28 02:24:31+08
2017-07-28 02:25:31+08
Je ne vois pas non plus le problème
Créez des exemples de données,
CREATE TABLE foo(ts) AS VALUES (
now()::timestamp without time zone
);
Affichez-le,
TABLE foo;
ts
----------------------------
2017-09-30 14:25:24.954084
(1 row)
Vous pouvez voir dans ce qui précède aucun tz en sortie. Modifions maintenant pour utiliser un with time zone
.
ALTER TABLE foo
ALTER COLUMN ts
SET DATA TYPE timestamp with time zone;
Voici la sortie, notez que vous avez un tz de -05
TABLE foo;
ts
-------------------------------
2017-09-30 14:25:24.954084-05
(1 row)
Quel est votre résultat de SHOW TIME ZONE
?
Fait intéressant, je vois de quoi vous parlez,
# SELECT now()::timestamp with time zone::timestamp;
now
----------------------------
2017-09-30 14:27:53.061616
(1 row)
Cependant, nous devons savoir ce que vous demandez.