PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengubah nilai zona waktu data

Ini banyak lebih efisien untuk menyetel zona waktu untuk sesi impor Anda daripada memperbarui nilainya nanti.

Saya mendapat kesan bahwa Anda menganggap zona waktu seperti pengaturan yang berlaku untuk nilai yang tidak berubah dalam tabel. Tapi itu tidak seperti itu sama sekali. Anggap saja sebagai pengubah input / output. timestampual yang sebenarnya nilai (dengan atau tanpa zona waktu) selalu disimpan sebagai stempel waktu UTC secara internal (jumlah detik sejak '2000-01-01 00:00' ). Lebih banyak detail:

UPDATE dalam contoh kedua Anda menggandakan ukuran tabel, karena setiap baris tidak valid dan versi baru ditambahkan (begitulah UPDATE bekerja dengan MVCC di Postgres). Selain operasi yang mahal, VACUUM harus melakukan lebih banyak pekerjaan nanti untuk membersihkan meja yang mengasapi. Sangat tidak efisien.

Ini sangat aman untuk SET zona waktu lokal untuk sesi tersebut. Ini tidak memengaruhi operasi bersamaan dengan cara apa pun. BTW, SET SESSION sama dengan SET biasa karena SESSION adalah default.

Jika Anda ingin menjadi benar-benar tentu, Anda dapat membatasi pengaturan untuk transaksi saat ini dengan SET LOCAL . Saya mengutip manual di sini

Satukan:

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

Periksa:

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. Pgadmin tidak memuat

  2. SQL Isi tabel dengan data acak

  3. Fungsi PostgreSQL mengembalikan batal

  4. Postgres:Bagaimana cara melakukan kunci Komposit?

  5. Mengatur application_name pada Postgres/SQLAlchemy