Biasanya menggunakan TIMESTAMPTZ
Berikut saran dari David E. Wheeler, pakar Postgres, dalam posting blog yang judulnya mengatakan semuanya:
Selalu Gunakan TIMESTAMP DENGAN ZONA WAKTU (TIMESTAMPTZ)
Jika Anda melacak momen aktual, titik tertentu pada garis waktu, gunakan TIMESTAMP WITH TIME ZONE
.
Satu Pengecualian:Partisi
Satu-satunya pengecualian Wheeler adalah ketika mempartisi pada cap waktu, karena keterbatasan teknis. Pengecualian yang langka bagi kebanyakan dari kita.
Untuk informasi tentang partisi, lihat doc dan lihat Wiki .
Salah Nama
Nama tipe data timestamp with time zone
dan timestamp without time zone
adalah keliru. Di keduanya kasus nilai tanggal-waktu disimpan dalam UTC (tidak ada zona waktu offset). Baca lagi kalimat sebelumnya. UTC, selalu. Frasa "dengan zona waktu" berarti "dengan memperhatikan zona waktu", bukan "menyimpan zona waktu di samping nilai ini". Perbedaan antara jenis adalah apakah ada zona waktu yang harus diterapkan baik selama penyimpanan (INSERT atau UPDATE) atau pengambilan (query SELECT). (Perilaku ini dijelaskan untuk Postgres -- Basis data lain sangat bervariasi dalam hal ini.)
Lebih tepatnya, orang harus mengatakan bahwa TIMESTAMP WITHOUT TIME ZONE menyimpan nilai tanggal-waktu tanpa zona waktu. Tetapi tanpa referensi kerangka waktu, siapa pun yang melihat data itu harus berasumsi (berharap, berdoa?) bahwa nilainya adalah UTC. Tapi sekali lagi, diperdebatkan karena Anda hampir tidak pernah menggunakan jenis ini.
Baca dokumen hati-hati, dan bereksperimenlah sedikit untuk memperjelas pemahaman Anda.
Tidak dikategorikan
Jika Anda ingin menyimpan gagasan umum tentang kemungkinan waktu daripada momen tertentu, gunakan jenis lainnya, TIMESTAMP WITHOUT TIME ZONE
.
Misalnya, Natal dimulai tahun ini pada saat pertama tanggal 25 Desember 2017. Itu adalah 2017-12-25T
00:00:00
tanpa indikator zona waktu atau offset-dari-UTC. Nilai ini hanyalah gagasan samar tentang kemungkinan momen. Tidak ada artinya sampai kita menerapkan zona waktu (atau offset). Jadi kami menyimpan ini menggunakan TIMESTAMP WITHOUT TIME ZONE
.
Para elf yang menjadi staf Departemen Logistik Acara Khusus Sinterklas menerapkan zona waktu sebagai bagian dari proses perencanaan mereka. Zona waktu paling awal saat ini adalah Pacific/Kiribati
, 14 jam lebih cepat dari UTC. Para elf menjadwalkan kedatangan pertama Santa di sana. Para elf menjadwalkan rencana penerbangan membawa rusa kutub ke zona waktu lain di mana tengah malam datang tak lama setelahnya, seperti Pacific/Auckland
. Mereka terus menuju ke barat saat tengah malam masing-masing zona tiba. Beberapa jam kemudian di Asia/Kolkata
, masih nanti di Europe/Paris
, masih beberapa jam lagi di America/Montreal
dan seterusnya.
Setiap momen pengiriman spesifik ini akan direkam oleh para elf menggunakan WITH TIME ZONE
, sedangkan ide umum Natal akan disimpan sebagai WITHOUT TIME ZONE
.
Penggunaan lain dalam aplikasi bisnis untuk WITHOUT TIME ZONE
menjadwalkan janji lebih jauh dari beberapa minggu. Politisi di seluruh dunia memiliki kecenderungan yang tidak dapat dijelaskan untuk mengacaukan waktu dan mendefinisikan ulang aturan zona waktu. Mereka bergabung dengan Waktu Musim Panas (DST), meninggalkan DST, memulai DST pada tanggal yang berbeda, atau mengakhiri DST pada tanggal yang berbeda, atau menggeser jam mereka 15 menit atau setengah jam. Semua ini telah dilakukan dalam beberapa tahun terakhir oleh Turki, Amerika Serikat, Rusia, Venezuela, dan lainnya.
Para politisi sering membuat perubahan ini dengan sedikit peringatan. Jadi, jika Anda menjadwalkan janji temu gigi selama enam bulan pada pukul 13:00, itu mungkin harus disimpan sebagai TIMESTAMP WITHOUT TIME ZONE
atau sebaliknya para politisi dapat secara efektif mengubah janji Anda menjadi siang, atau 14:00, atau 13:30.