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

Bagaimana make_timestamptz() Bekerja di PostgreSQL

Di PostgreSQL, make_timestamptz() fungsi memungkinkan Anda membuat stempel waktu dengan zona waktu dari bidang tahun, bulan, hari, jam, menit dan detik, serta bidang zona waktu opsional.

Sintaks

Fungsi tersebut memiliki sintaks berikut:

make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])

Dimana year , month , dan day adalah bilangan bulat yang mewakili tahun, bulan, dan hari dari tanggal, dan hour adalah bagian jam, min adalah bagian menit, dan sec adalah bagian detik.

Jam dan menit diberikan sebagai bilangan bulat , detik diberikan sebagai presisi ganda .

timezone opsional argumen adalah untuk zona waktu. Jika tidak ditentukan, zona waktu saat ini digunakan.

Hasilnya dikembalikan sebagai waktu dengan zona waktu .

Contoh

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);

Hasil:

1999-03-14 10:35:12.15+10

Dalam hal ini saya tidak memberikan zona waktu, jadi saya menggunakan zona waktu saat ini.

Kami dapat memverifikasi jenis pengembalian dengan kueri berikut.

SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));

Hasil:

timestamp with time zone

pg_typeof() function mengembalikan tipe data argumennya, jadi saya meneruskan make_timestamptz() sebagai argumen.

Tentukan Zona Waktu

Dalam contoh ini saya secara eksplisit memberikan zona waktu.

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');

Hasil:

1999-03-14 16:35:12.15+10

Berikut ini contoh lain, tetapi dengan berbagai nilai zona waktu.

\x
SELECT 
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');

Hasil (menggunakan keluaran vertikal):

make_timestamptz | 1999-12-31 23:31:00+10
make_timestamptz | 2000-01-01 00:31:00+10
make_timestamptz | 2000-01-01 15:01:00+10
make_timestamptz | 2000-01-01 09:01:00+10
make_timestamptz | 2000-01-01 11:01:00+10
make_timestamptz | 1999-12-31 21:01:00+10

Dalam contoh ini saya menggunakan \x untuk mengaktifkan tampilan yang diperluas (juga dikenal sebagai "output vertikal") agar hasilnya lebih mudah dibaca.

Memasukkan \x mengaktifkan dan menonaktifkan tampilan yang diperluas (yaitu mengaktifkan dan menonaktifkannya).

Lihat Mengembalikan Daftar Zona Waktu yang Didukung oleh PostgreSQL untuk mendapatkan daftar zona waktu yang valid.

Di Luar Jangkauan

Jika salah satu argumen berada di luar rentang nilai yang mungkin untuk bagian tanggalnya, Anda akan mendapatkan kesalahan "di luar rentang".

SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);

Hasil:

ERROR: date field value out of range: 1999-03-32

Dalam hal ini hari adalah 32, yang berada di luar jangkauan, sehingga pesan tersebut menjelaskan bahwa nilai bidang tanggal berada di luar jangkauan.

Jika hanya nilai bidang waktu yang berada di luar rentang, kesalahan akan diberi kata yang sesuai.

SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);

Hasil:

ERROR: time field value out of range: 10:61:12.15

Dalam hal ini minutes argumennya adalah 61, yang di luar jangkauan.

Stempel Waktu Tanpa Zona Waktu

Untuk membuat stempel waktu tanpa zona waktu, gunakan make_timestamp() fungsi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:bagaimana Anda membulatkan stempel waktu ke atas atau ke bawah ke menit terdekat?

  2. Bagaimana menghubungkan GraphQL dan PostgreSQL

  3. Postgres:Bagaimana cara melakukan kunci Komposit?

  4. Kembalikan set catatan (tabel virtual) dari fungsi

  5. Bagaimana cara mendapatkan Waktu Pembuatan Database di PostgreSQL 9.0?