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

Bagaimana cara mengubah waktu lokal ke UTC?

Ini tercakup dalam manual , tetapi tidak selalu jelas bagaimana cara bekerja dengan tanggal/waktu. Spesifikasi SQL agak aneh.

Dalam kasus pertanyaan Anda, tidak jelas apakah Anda ingin menyimpan waktu dalam UTC tetapi menampilkannya dalam waktu lokal server (TimeZone ), atau apakah Anda ingin mengabaikan TimeZone dan selalu tampilkan sebagai UTC. Saya akan menganggap yang terakhir.

Untuk stempel waktu, Anda cukup menggunakan AT TIME ZONE dua kali, seperti:

SELECT TIMESTAMP '2013-08-13 00:00:00' AT TIME ZONE 'Australia/Sydney' AT TIME ZONE 'UTC';

Anda perlu menggunakan AT TIME ZONE dua kali. Sekali untuk mengonversi input timestamp ke timestamptz sesuai dengan zona waktu argumen, lalu yang lain untuk mengonversinya menjadi timestamp di UTC.

Sayangnya karena cara (IMO gila) spesifikasi SQL mendefinisikan AT TIME ZONE untuk TIME , Anda tidak dapat melakukan hal yang sama untuk TIME . Anda harus memanipulasi TimeZone variabel sebagai gantinya:

SET TimeZone = 'UTC';
SELECT TIME '07:00' AT TIME ZONE 'Australia/Sydney';

Ini masih memberi Anda timetz bukan time . Jadi nilai tampilannya berubah dengan timezone pengaturan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rel menunggu migrasi di rake db:test:prepare

  2. Bagaimana cara menghapus duplikat sehingga hanya pasangan yang ada di tabel?

  3. PostgreSQL, PILIH dari max id

  4. Sudo gem install pg tidak akan berfungsi

  5. Migrasikan data SPASIAL dari Oracle ke Postgresql