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

Bagaimana make_timestamp() Bekerja di PostgreSQL

Di PostgreSQL, make_timestamp() fungsi ini memungkinkan Anda membuat stempel waktu dari bidang tahun, bulan, hari, jam, menit, dan detik.

Sintaks

Fungsi tersebut memiliki sintaks berikut:

make_timestamp(year int, month int, day int, hour int, min int, sec double precision)

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 .

Hasilnya dikembalikan sebagai stempel waktu . Lebih tepatnya, itu dikembalikan sebagai waktu tanpa zona waktu .

Contoh

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT make_timestamp(2020, 10, 25, 9, 30, 17.12);

Hasil:

2020-10-25 09:30:17.12

Dan kami dapat memverifikasi jenis pengembalian dengan kueri berikut.

SELECT pg_typeof(make_timestamp(2020, 10, 25, 9, 30, 17.12));

Hasil:

timestamp without time zone

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

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_timestamp(2020, 13, 25, 9, 30, 17.12);

Hasil:

ERROR: date field value out of range: 2020-13-25

Dalam hal ini bulan 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_timestamp(2020, 10, 25, 25, 30, 17.12);

Hasil:

ERROR: time field value out of range: 25:30:17.12

Meneruskan String sebagai Argumen

Dokumentasi Postgres menyatakan bahwa argumen harus bilangan bulat (dan presisi ganda dalam hal seconds argumen), tetapi meneruskan string juga berfungsi (mungkin karena mereka secara implisit dikonversi ke bilangan bulat), selama setiap argumen berada dalam rentang yang tepat.

SELECT make_timestamp('2020', '12', '25', '10', '30', '17.12');

Hasil:

2020-12-25 10:30:17.12

Sekali lagi kita dapat menggunakan pg_type() untuk memeriksa tipe data yang dihasilkan.

SELECT pg_typeof(make_timestamp('2020', '12', '25', '10', '30', '17.12'));

Hasil:

timestamp without time zone

Namun, Anda masih perlu memastikan setiap argumen akan valid setelah dikonversi ke bilangan bulat, jika tidak, Anda akan mendapatkan kesalahan.

SELECT pg_typeof(make_timestamp('2020', '13', '25', '10', '30', '17.12'));

Hasil:

ERROR: date field value out of range: 2020-13-25

Stempel Waktu Dengan Zona Waktu

Untuk membuat stempel waktu dengan zona waktu nilai, gunakan make_timestamptz() 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. Bagaimana cara menambahkan batasan kaskade yang dihapus?

  2. Perbedaan Rails/Postgresql SQL dengan Tanggal

  3. ekspresi reguler internasionalisasi di postgresql

  4. Postgresql menerapkan kombinasi kolom dua arah yang unik

  5. Query PostgreSQL dengan Npgsql dan Entity Framework menggunakan unaccent