PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Промяна на стойността на часовата зона на данните

Много е по-ефективно е да зададете часовата зона за вашата сесия за импортиране, отколкото да актуализирате стойностите по-късно.

Имам впечатлението, че мислите за часовата зона като за настройка, която се прилага към иначе непроменени стойности в таблиците. Но съвсем не е така. Мислете за това като входно/изходен модификатор. Действително timestamp стойностите (със или без часова зона) са винаги съхранени като UTC времеви клейма вътрешно (брой секунди от '2000-01-01 00:00' ). Много повече подробности:

UPDATE във втория ви пример удвоява размера на таблицата, тъй като всеки един ред е невалиден и се добавя нова версия (ето как UPDATE работи с MVCC в Postgres). В допълнение към скъпата операция, VACUUM ще трябва да свърши повече работа по-късно, за да изчисти подуването на масата. Много неефективно.

Той енапълно безопасен към SET местната часова зона за сесията. Това не засяга по никакъв начин едновременните операции. BTW, SET SESSION е същото като обикновен SET защото SESSION така или иначе е по подразбиране.

Ако искате да сте абсолютно Разбира се, можете да ограничите настройката до текущата транзакция с SET LOCAL . Цитирам ръководството тук

Съберете заедно:

BEGIN;
SET LOCAL timezone = 'UTC';
COPY tabledata FROM 'c:\Users\Public\Downloads\test.csv' DELIMITERS ',' CSV;
COMMIT;

Проверка:

SHOW timezone;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql 9.3. Групиране по без всички колони

  2. DATEADD еквивалент в PostgreSQL

  3. Конфигурирайте STS с JPA 2.0 с помощта на PostgreSQL 9.3

  4. Как да закръгля стойността на милисекунди от timestamp(0) в PostgreSQL?

  5. Копирайте от csv в таблица с id серийна колона, автоматично увеличаваща PSQL