PostgreSQL

PostgreSQL To_char Timestamp Dengan Zona Waktu

PostgreSQL To_char Timestamp Dengan Zona Waktu

Metode pemformatan PostgreSQL mencakup kumpulan alat yang berguna untuk menerjemahkan tipe data yang berbeda (tanggal/waktu, bilangan bulat, titik-mengambang, numerik) ke string yang diformat dan menerjemahkan string yang diformat kembali ke tipe data yang unik. Untuk selanjutnya, terkadang kita perlu mengonversi zona waktu juga. Waktu selalu dicatat dalam UTC di cap waktu PostgreSQL untuk formulir data zona waktu, tetapi ditampilkan secara default di browser, sesi, atau waktu lokal pengguna. Salah satu fungsi pembantunya yang kami andalkan adalah metode TO_CHAR() , yang memungkinkan stempel waktu dan stempel waktu dengan zona waktu, di antara formulir lainnya, dan memungkinkan Anda untuk mengatur potongan stempel waktu sesuka Anda. Stempel waktu, presisi ganda, durasi, angka, atau nilai numerik semuanya dapat dikonversi menjadi string menggunakan metode PostgreSQL TO_CHAR(). Tampaknya ada metode argumen tunggal, 'to_timestamp', yang mengambil argumen presisi ganda dan mengubah dari Unix epoch ke timestamp menggunakan zona waktu. Kami akan menunjukkan kepada Anda bagaimana melakukan sesuatu tentang ini di posting ini. Mari kita lihat lebih dekat to_char() terlebih dahulu.

Sintaksis:

Sintaks umum untuk fungsi to_char() adalah sebagai berikut:

>> To_char( ekspresi, format );

Metode TO_CHAR() di PostgreSQL membutuhkan dua pernyataan:

Ada dua jenis stempel waktu yang tersedia di PostgreSQL:

Dan inilah masalahnya: formulir data stempel waktu standar tidak mengetahui zona waktu. Dan itu adalah kebutuhan SQL (bagaimana hal itu bisa terjadi tampaknya di luar). Fokus utama kami adalah mempelajari stempel waktu to_Char() dengan zona waktu. Untuk mulai mengerjakan PostgreSQL dengan fungsi 'to_char()', buka shell baris perintah PostgreSQL dan kirimkan nilai parameter untuk server wajib, database, nomor port, nama pengguna, dan kata sandi. Biarkan pertimbangan ini tidak terisi jika Anda perlu menggunakan parameter default yang ditentukan seperti yang ditunjukkan pada gambar di bawah ini.

To_char() Untuk Nomor String

Untuk memahami konsep fungsi to_Char() menggunakan timestamp dengan zona waktu, Anda harus terlebih dahulu mencoba contoh nomor string. Jadi kami memiliki angka '1897', dan kami akan mengonversinya menjadi '9999.Format 99' menggunakan kueri di bawah ini. Dari output di bawah, Anda dapat melihat bahwa nomor string telah diubah ke dalam format yang ditentukan.

>> PILIH ke_char(1897, '9999.99');

Berikut adalah ilustrasi lain untuk konversi. Kali ini kami telah mengonversi angka ke format lain yang memiliki 'koma' di dalamnya. Karakter 'G' akan digunakan untuk menentukan koma.

>> PILIH ke_char(367.78, '9G999.99');

To_char Timestamp dengan TimeZone

Untuk memahami Timestamp dengan konsep zona waktu, mari kita perhatikan contoh sederhana. Misalkan Anda berada di 'Pakistan', jadi zona waktu Anda harus 'PKT' sekarang.

Contoh 01:

Mari kita coba mengambil stempel waktu saat ini dalam kueri SELECT sambil mengonversinya ke format Tanggal-waktu, seperti yang ditunjukkan pada kueri di bawah. Istilah 'TZ' digunakan untuk mengembalikan Zona Waktu saat ini. Output menampilkan hari, tanggal, waktu, dan zona waktu.

>> SELECT to_char(CURRENT_TIMESTAMP, 'Hari Senin hh, yyyy HH12:MI AM (TZ)');

Mari kita ubah zona waktu kita menjadi 'Eropa/Roma'.

>> SET TimeZone= 'Eropa/Roma';

Anda akan mendapatkan waktu, tanggal, dan zona waktu yang berbeda saat mencoba kueri SELECT yang sama, seperti yang ditunjukkan.

Contoh 02:

Saat Anda menentukan TimeZone dalam kueri SELECT, maka output tidak akan menampilkan zona waktu saat ini sesuai dengan output di bawah ini.

>> SELECT to_char(CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Yerusalem', 'yyyy HH12:MI AM (TZ)');

Contoh 03:

Mari kita buat tabel cepat bernama 'waktu' dengan dua bidang. Salah satunya adalah tipe TIMESTAMP, dan yang lainnya adalah tipe TIMESTAMPTZ.

>> CREATE TABLE time (tanpa_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Sekarang mari kita periksa zona waktu saat ini yang telah kita gunakan di sistem kita menggunakan perintah SHOW di shell sebagai berikut:

>> TAMPILKAN zona waktu;

Sekarang Anda harus memasukkan nilai tanggal dan waktu saat ini dari zona waktu saat ini yang telah Anda gunakan pada perangkat Anda di tabel 'waktu' dengan menggunakan fungsi 'sekarang ()' seperti yang ditunjukkan di bawah ini.

>> MASUKKAN KE NILAI waktu (sekarang (), sekarang ());

Sekarang Anda dapat mengambil catatan dari tabel 'waktu' menggunakan kueri SELECT seperti di bawah ini. Kolom 'without_timezone' menunjukkan tanggal dan waktu saat ini tanpa zona waktu, sedangkan kolom 'with_timezone' menunjukkan waktu lokal dengan zona waktu secara lengkap.

>> PILIH * DARI waktu;

Mari kita ubah zona waktu menjadi 'AS/TIMUR' dari kueri di bawah ini.

>> SET ZONA WAKTU SESI 'AS/TIMUR';

Sekarang mari kita periksa meja lagi. Anda akan melihat bagaimana nilai kolom 'with_timezone' telah ditampilkan sesuai dengan zona waktu 'US/EASTERN', tetapi nilai 'without_timezone' sama seperti sebelumnya.

>> PILIH * DARI waktu;

Contoh 04:

Mari kita lihat beberapa contoh lagi untuk metode to_char(). Asumsikan tabel 'waktu' yang sama di atas. Kami akan mengonversi nilai kolom 'without_timezone' menjadi string yang terdiri dari jam, menit, detik, dan zona waktu. Mari kita coba query SELECT menggunakan metode to_char() untuk mengonversi nilai kolom 'without_timezone'. Kami telah menyebutkan 'TZ' dalam kueri kami, tetapi itu tidak akan menunjukkan zona waktu karena nilai kolom tidak terdiri dari zona waktu. Perintah yang dinyatakan di bawah ini memberikan output:

>> PILIH to_char(without_timezone, 'HH12:MI:SS TZ') DARI waktu;

Sekarang mari kita coba kueri yang sama dalam kasus kolom lain 'with_timezone', untuk mengubahnya menjadi rangkaian jam, menit, detik, dan zona waktu. Kali ini akan menampilkan zona waktu dengan waktu juga menggunakan kueri di bawah ini.

>> PILIH to_char(with_timezone, 'HH12:MI:SS TZ') DARI waktu;

Kesimpulan:

Karena masalah dengan/tanpa zona waktu memengaruhi lebih dari sekadar partisi tabel, saya menyarankan Anda untuk menggunakan tipe zona waktu kapan pun memungkinkan. Hampir semua panduan membahas bagaimana melakukan pembersihan bergantung waktu di PostgreSQL menggunakan jam lokal. Solusi sensitif zona waktu yang tepat menambahkan sedikit komplikasi tetapi dapat menyelamatkan Anda dari masalah di masa depan.

Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...
Cara Menginstal League Of Legends di Ubuntu 14.04
Jika Anda adalah penggemar League of Legends, maka ini adalah kesempatan bagi Anda untuk menguji coba League of Legends. Perhatikan bahwa LOL didukung...
Instal Game Strategi OpenRA terbaru di Ubuntu Linux
OpenRA adalah mesin game Strategi Waktu Nyata Libre/Gratis yang membuat ulang game Westwood awal seperti Command & Conquer klasik: Red Alert. Mod yang...