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

Cara Mendapatkan Tanggal dan Waktu Saat Ini dengan Offset Zona Waktu di PostgreSQL

Masalah:

Anda ingin mendapatkan tanggal dan waktu saat ini dengan informasi zona waktu dari database PostgreSQL.

Solusi:

Kami akan menggunakan CURRENT_TIMESTAMP atau NOW() untuk mendapatkan tanggal dan waktu saat ini dengan offset zona waktu.

SELECT CURRENT_TIMESTAMP ;

Berikut hasil querynya:

2019-09-15 13:13:12.118432+02

Diskusi:

CURRENT_TIMESTAMP mengembalikan tanggal, waktu, dan offset zona waktu saat ini (menggunakan tanggal, waktu, dan zona waktu mesin yang menjalankan PostgreSQL). Ini dikembalikan sebagai nilai dalam 'YYYY-MM-DD jj:mm:ss.nnnnnn+/-tz' format. Dalam format ini:

  • YYYY adalah tahun dengan 4 digit.
  • MM adalah bulan dengan 2 digit.
  • DD adalah 2 digit hari dalam sebulan.
  • hh adalah 2 digit jam.
  • mm adalah menit 2 digit.
  • ss adalah 2 digit detik.
  • nnnnnn mendefinisikan jumlah detik pecahan (yaitu presisi) dari 0 hingga 6.
  • +tz atau -tz adalah offset zona waktu, baik plus atau minus dari UTC.

Seperti yang Anda perhatikan, fungsi ini tidak memiliki tanda kurung. Namun, jika Anda ingin menampilkan tanggal dan waktu dengan presisi tertentu, Anda dapat menggunakan argumen integer opsional. Ini mengembalikan tanggal dan waktu dengan pecahan detik dan zona waktu offset. Argumen ini harus dalam kisaran 0 hingga 6; 0 bukan pecahan detik, 1 adalah satu pecahan detik (misalnya satu tempat di belakang desimal), dll. Lihat contoh berikut:

SELECT CURRENT_TIMESTAMP(3) ;

Berikut hasil querynya:

2019-09-15 13:01:51.142+02

Hasil ini berisi 3 digit pecahan detik karena kami menempatkan 3 sebagai argumen dalam fungsi CURRENT_TIMESTAMP. Offset zona waktu masih muncul di akhir.

Waktu yang dikembalikan oleh fungsi ini tidak berubah selama transaksi atau satu kueri. Itu selalu waktu ketika transaksi dimulai.

SEKARANG() mirip dengan CURRENT_TIMESTAMP fungsi dan mengembalikan hasil yang sama. Bedanya CURRENT_TIMESTAMP adalah fungsi standar SQL, sedangkan NOW() khusus untuk PostgreSQL.

SELECT NOW() ;

Berikut hasil querynya:

2019-08-27 12:18:55.324145+02

Perhatikan bahwa fungsi SEKARANG() memerlukan tanda kurung. Namun, Anda dapat membiarkannya kosong dan mendapatkan nilai default.

CURRENT_TIMESTAMP dan NOW() mengembalikan timestamptz tipe data.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UPDATE dengan ORDER BY

  2. perbedaan antara localhost dan postgres untuk Host di buruh pelabuhan

  3. Kembali ke readline versi 6.x di Homebrew untuk memperbaiki Postgresql?

  4. Bagaimana cara menghindari beberapa evaluasi fungsi dengan sintaks (func()).* dalam kueri SQL?

  5. Cara Memantau Kinerja PostgreSQL 12 dengan OmniDB – Bagian 1