全部产品
Search
文档中心

PolarDB:Tipe data tanggal dan waktu

更新时间:Jul 02, 2025

Topik ini menjelaskan tipe data tanggal dan waktu yang didukung oleh PolarDB for PostgreSQL (Compatible with Oracle) Distributed Relational Database Service (DRDS).

Catatan Dalam pembahasan berikut mengenai tipe data tanggal dan waktu, diasumsikan bahwa parameter konfigurasi polar_comp_redwood_date telah diatur ke true saat tabel dibuat atau diubah.
Tipe data dan waktuUkuran penyimpananDeskripsiNilai minimumNilai maksimumPresisi
DATE8 byteTanggal dan waktu tanpa zona waktu. 4713 SM5874897 M1 detik
INTERVAL DAY TO SECOND [(p)]12 bytePeriode waktu dengan akurasi kustom. -178000000 tahun178000000 tahun1 mikrodetik / 14 bit
INTERVAL YEAR TO MONTH12 byteDaftar rentang waktu. -178000000 tahun178000000 tahun1 mikrodetik / 14 bit
TIMESTAMP [(p)]8 byteCap waktu dari tanggal dan waktu. 4713 SM5874897 M1 mikrodetik
TIMESTAMP [(p)] WITH TIME ZONE8 byteCap waktu dari tanggal dan waktu dengan zona waktu. 4713 SM5874897 M1 mikrodetik
TIME [(p)]8 byteHanya untuk waktu dalam sehari. 00:00:0024:00:001 milidetik / 14 bit
TIME [(p)] WITH TIME ZONE12 byteHanya untuk waktu dalam sehari dengan zona waktu. 00:00:00+145924:00:00-14591 milidetik / 14 bit

Jika kata kunci DATE muncul sebagai tipe data kolom tabel dalam pernyataan bahasa definisi data (DDL) seperti CREATE TABLE atau ALTER TABLE, nilai DATE secara otomatis dikonversi menjadi tipe TIMESTAMP(0) saat definisi tabel disimpan di database. Oleh karena itu, bidang waktu dalam nilai DATE juga disimpan di kolom.

Jika salah satu situasi berikut terjadi — kata kunci DATE muncul sebagai tipe data variabel dalam bagian deklarasi Stored Procedure Language (SPL), sebagai tipe data parameter formal dalam prosedur SPL atau fungsi SPL, atau sebagai output dari fungsi SPL — nilai DATE dikonversi menjadi tipe TIMESTAMP(0). Dengan demikian, DATE juga dapat memproses bidang waktu.

TIMESTAMP menerima nilai presisi opsional p yang menentukan jumlah digit pecahan yang disimpan di bidang detik. Nilai valid untuk p berkisar dari 0 hingga 6, dengan nilai default sebesar 6.

Secara default, nilai TIMESTAMP disimpan sebagai angka floating-point presisi ganda. Dalam hal ini, batas efektif presisi bisa kurang dari 6. Nilai TIMESTAMP disimpan sebagai detik sebelum atau sesudah tengah malam 1 Januari 2000. Presisi mikrodetik dicapai untuk tanggal dalam beberapa tahun dari 1 Januari 2000, tetapi presisi menurun untuk tanggal yang lebih jauh. Saat nilai TIMESTAMP disimpan sebagai bilangan bulat 8-byte, yang merupakan opsi waktu kompilasi, presisi mikrodetik tersedia untuk seluruh rentang nilai. Namun, cap waktu bilangan bulat 8-byte memiliki rentang tanggal yang lebih terbatas daripada tanggal yang tercantum dalam tabel sebelumnya. Rentang nilainya adalah dari 4713 SM hingga 294276 M.

TIMESTAMP (p) WITH TIME ZONE mirip dengan TIMESTAMP (p), tetapi mencakup zona waktu.

Tipe INTERVAL

Nilai INTERVAL menentukan periode waktu. Nilai tipe INTERVAL terdiri dari bidang-bidang yang menggambarkan nilai data. Tabel berikut mencantumkan bidang yang diizinkan dalam tipe INTERVAL.

BidangNilai valid
TAHUNNilai integer (positif atau negatif).
BULAN0 hingga 11.
HARINilai integer (positif atau negatif).
JAM0 hingga 23.
MENIT0 hingga 59.
DETIK0 hingga 59.9(p), di mana 9(p) adalah presisi detik pecahan.

Bidang harus muncul dalam urutan menurun, dari TAHUN ke BULAN, dari HARI ke JAM, dan dari MENIT ke DETIK.

PolarDB mendukung dua tipe INTERVAL yang kompatibel dengan Oracle.

  • Variabel pertama yang didukung oleh PolarDB adalah INTERVAL DAY TO SECOND [(p)]. Variabel ini menyimpan interval waktu dalam hari, jam, menit, dan detik.
    Catatan p menentukan presisi bidang detik.
    Arti dari nilai-nilai berikut dalam PolarDB:
    • INTERVAL '1 2:34:5.678' DAY TO SECOND(3)

      Satu hari, 2 jam, 34 menit, 5 detik, dan 678 ribuan detik.

    • INTERVAL '1 23' DAY TO HOUR

      Satu hari dan 23 jam.

    • INTERVAL '2:34' HOUR TO MINUTE

      2 jam dan 34 menit.

    • INTERVAL '2:34:56.129' HOUR TO SECOND(2)
      2 jam, 34 menit, 56 detik, dan 13 ribuan detik.
      Catatan Detik pecahan dibulatkan menjadi 13 karena presisi yang ditentukan.
  • Variabel kompatibel Oracle kedua yang didukung oleh PolarDB adalah INTERVAL YEAR TO MONTH. Variabel ini menyimpan interval waktu dalam tahun dan bulan.
    Arti dari nilai-nilai berikut dalam PolarDB:
    • INTERVAL '12-3' YEAR TO MONTH

      12 tahun dan 3 bulan.

    • INTERVAL '45' YEAR

      45 tahun.

    • INTERVAL '300' MONTH

      25 tahun.

Masukan tanggal dan waktu

Masukan tanggal dan waktu dapat menggunakan format ISO 8601 SQL-kompatibel, format dd-MON-yy default di Oracle, atau format lain yang memiliki nilai tahun, bulan, dan hari yang jelas. Namun, kami sarankan Anda menggunakan fungsi TO_DATE untuk menghindari ambiguitas.

Setiap masukan tanggal atau waktu harus diapit dalam tanda kutip tunggal (') dalam format string teks. Anda dapat menggunakan sintaks SQL standar berikut:
tipe 'nilai' tipe
Catatan
  • tipe bisa DATE atau TIMESTAMP.
  • nilai adalah string tanggal atau waktu.
  • Tanggal
    Format masukan berikut untuk tanggal didukung. Setiap nilai setara dengan 8 Januari 1999.
    • 8 Januari 1999
    • 1999-01-08
    • 1999-Jan-08
    • Jan-08-1999
    • 08-Jan-1999
    • 08-Jan-99
    • Jan-08-99
    • 19990108
    • 990108

    Nilai tanggal dapat ditetapkan ke kolom atau variabel DATE atau TIMESTAMP. Bidang jam, menit, dan detik diatur ke nol jika nilai DATE tidak dilengkapi dengan nilai waktu.

  • Waktu
    Tabel berikut mencantumkan contoh bidang waktu dari tanggal atau timestamp.
    ContohDeskripsi
    04:05:06.789ISO 8601
    04:05:06ISO 8601
    04:05ISO 8601
    040506ISO 8601
    04:05 AMSetara dengan 04:05. AM tidak mempengaruhi nilai.
    04:05 PMSetara dengan 16:05. Nilai jam harus kurang dari atau sama dengan 12.
    04:05:06.789-8ISO 8601
    04:05:06-08:00ISO 8601
    04:05-08:00ISO 8601
    040506-08ISO 8601
    04:05:06 PSTSingkatan zona waktu.
    2003-04-12 04:05:06America/New_YorkZona waktu yang dideklarasikan dengan nama.
  • Timestamp

    Masukan yang valid untuk timestamp terdiri dari tanggal dan waktu. Bidang tanggal dari timestamp dapat diformat berdasarkan format masukan sebelumnya untuk tanggal. Bidang waktu dari timestamp dapat diformat berdasarkan format masukan sebelumnya untuk waktu.

    Dalam contoh berikut, format default Oracle digunakan.

    08-JAN-99 04:05:06

    Dalam contoh berikut, format standar ISO 8601 digunakan.

    1999-01-08 04:05:06

Keluaran tanggal dan waktu

Format keluaran default dari tipe data tanggal dan waktu bisa dd-MON-yy atau yyyy-mm-dd. Format dd-MON-yy kompatibel dengan Oracle dan disebut format tanggal Redwood. Format yyyy-mm-dd adalah format ISO 8601 yang ditentukan oleh antarmuka pemrograman database. Program yang menggunakan Java Database Connectivity (JDBC) untuk interaksi SQL menampilkan tanggal dalam format ISO 8601. Program lain seperti PSQL menampilkan tanggal dalam format Redwood.

Tabel berikut mencantumkan contoh keluaran dalam format Redwood dan ISO 8601.
FormatContoh
Gaya Redwood31-DES-05 07:37:16
ISO 8601/standar SQL1997-12-17 07:37:16

Format internal

PolarDB menghitung semua nilai tanggal dan waktu menggunakan tanggal Julian. Asumsikan setiap tahun memiliki 365.2425 hari. Dalam hal ini, Anda dapat menggunakan tanggal Julian untuk memprediksi dan menghitung tanggal setelah 4713 SM dengan benar.