PostgreSQL - Fungsi dan Operator Tanggal/Waktu

Halo, para pemula pemrograman! Hari ini, kita akan melangsungkan sebuah perjalanan yang menarik melalui dunia tanggal dan waktu di PostgreSQL. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk menggイド Anda melalui konsep-konsep ini dengan kesenangan yang saya miliki selama 15 tahun terakhir di kelas. Jadi, ambil catatan virtual Anda, dan mari kita masuk ke dalamnya!

Date/Time Functions & Operators

Memahami Tanggal dan Waktu di PostgreSQL

Sebelum kita mulai menjelajahi fungsi dan operator, mari kitaambil sedikit waktu untuk memahami mengapa tanggal dan waktu sangat penting dalam pemrograman. Bayangkan Anda sedang membuat mesin waktu (tidak akan enak itu?). Anda akan perlu mengetahui tepatnya kapan Anda berada dan kemana (atau kapan) Anda ingin pergi. Itu sebenarnya apa yang kita lakukan dengan basis data - kita melacak kapan hal-hal terjadi, berapa lama mereka memakan waktu, dan bahkan memprediksi acara masa depan.

Sekarang, mari kita lihat beberapa fungsi tanggal dan waktu yang paling berguna di PostgreSQL.

Fungsi AGE(timestamp, timestamp) dan AGE(timestamp)

Fungsi AGE seperti teman yang selalu ingatberapa lama sesuatu terjadi. Itu menghitung perbedaan antara dua timestamp atau antara timestamp dan tanggal saat ini.

Contoh 1: Menghitung Umur

SELECT AGE(TIMESTAMP '2023-05-15', TIMESTAMP '1990-01-01');

Ini akan mengembalikan sesuatu seperti:

33 tahun 4 bulan 14 hari

Apa yang terjadi disini? Kita meminta PostgreSQL untuk menghitung perbedaan waktu antara 1 Januari 1990 dan 15 Mei 2023. Itu seperti meminta, "Berapa umur seseorang jika mereka lahir pada 1 Januari 1990?"

Contoh 2: Menghitung Umur dari Tanggal Saat Ini

SELECT AGE(TIMESTAMP '1990-01-01');

Ini akan mengembalikan perbedaan waktu antara 1 Januari 1990 dan tanggal saat ini. Itu seperti meminta, "Berapa umur seseorang yang lahir pada 1 Januari 1990?"

Fungsi Tanggal/Waktu Saat Ini

Fungsi ini seperti jam dan kalender yang terpasang dalam basis data Anda. Mereka memberitahu Anda kapan waktu saat ini.

Contoh 3: Mendapatkan Tanggal dan Waktu Saat Ini

SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;

Ini akan mengembalikan tanggal hari ini, waktu saat ini, dan keduanya gabungan. Itu seperti meminta basis data Anda, "Hari ini adalah hari apa, pukul berapa sekarang, dan apa momen tepat sekarang ini?"

Fungsi DATE_PART dan DATE_TRUNC

DATE_PART seperti mesin waktu yang dapat memperbesar bagian tertentu dari tanggal atau waktu. DATE_TRUNC, dari sisi lain, seperti pengatur waktu yang menyederhanakan - itu membulatkan ke bawah ke unit waktu tertentu.

Contoh 4: Mengambil Bagian dari Tanggal

SELECT DATE_PART('year', TIMESTAMP '2023-05-15 10:30:00');
SELECT DATE_PART('hour', TIMESTAMP '2023-05-15 10:30:00');

Query pertama akan mengembalikan 2023, dan yang kedua akan mengembalikan 10. Itu seperti meminta, "Dari tahun mana timestamp ini?" dan "Jam berapa di hari ini timestamp ini?"

Contoh 5: Memotong Timestamp

SELECT DATE_TRUNC('hour', TIMESTAMP '2023-05-15 10:30:00');

Ini akan mengembalikan '2023-05-15 10:00:00'. Itu seperti mengatakan, "Berikan saya timestamp ini, tapi setel menit dan detik ke nol."

Fungsi EXTRACT

EXTRACT mirip dengan DATE_PART, tetapi dengan sintaksis yang sedikit berbeda. Itu cara lain untuk mengambil bagian tertentu dari tanggal atau waktu.

Contoh 6: Mengambil dari Timestamp

SELECT EXTRACT(YEAR FROM TIMESTAMP '2023-05-15 10:30:00');
SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-05-15 10:30:00');

Query ini akan mengembalikan 2023 dan 10, masing-masing, sama seperti contoh DATE_PART kita.

Fungsi ISFINITE

Fungsi ini seperti pemeriksaan kenyataan basis data Anda. Mereka memberitahu Anda jika tanggal, timestamp, atau interval adalah nilai nyata, terbatas, atau salah satu nilai tak terbatas khusus.

Contoh 7: Memeriksa Finiteness

SELECT ISFINITE(DATE '2023-05-15');
SELECT ISFINITE(TIMESTAMP 'infinity');

Query pertama akan mengembalikan true, sedangkan yang kedua akan mengembalikan false. Itu seperti meminta, "Apakah 15 Mei 2023 adalah tanggal nyata?" (ya) dan "Apakah 'infinity' adalah timestamp nyata?" (tidak).

Fungsi JUSTIFY

Fungsi ini seperti pengatur waktu basis data Anda. Mereka mengambil interval yang mungkin memiliki nilai yang aneh dan mengatur mereka ke representasi yang lebih standar.

Contoh 8: Mengatur Interval

SELECT JUSTIFY_DAYS(INTERVAL '30 days');
SELECT JUSTIFY_HOURS(INTERVAL '36 hours');
SELECT JUSTIFY_INTERVAL(INTERVAL '1 month 36 hours');

Ini mungkin mengembalikan:

1 bulan
1 hari 12 jam
1 bulan 1 hari 12 jam

Itu seperti mengatakan, "Ambil periode waktu ini dan ekspresikan mereka dalam cara yang lebih standar."

Ringkasan Fungsi

Berikut adalah tabel praktis yang menggabungkan semua fungsi yang kita diskusikan:

Fungsi Deskripsi
AGE() Menghitung perbedaan antara timestamps
CURRENT_DATE Mengembalikan tanggal saat ini
CURRENT_TIME Mengembalikan waktu saat ini
CURRENT_TIMESTAMP Mengembalikan tanggal dan waktu saat ini
DATE_PART() Mengambil bagian tertentu dari tanggal/waktu
DATE_TRUNC() Memotong timestamp ke presisi tertentu
EXTRACT() Mengambil bidang tertentu dari tanggal/waktu
ISFINITE() Memeriksa jika tanggal/waktu/interval adalah terbatas
JUSTIFY_DAYS() Mengatur hari dalam interval
JUSTIFY_HOURS() Mengatur jam dalam interval
JUSTIFY_INTERVAL() Mengatur seluruh interval

Dan begitu juga, teman-teman! Kita telah bepergian melalui waktu (fungsi) bersama, mengambil bit-bit tanggal, memeriksa kenyataan tak terbatas, dan bahkan mengatur interval. Ingat, bekerja dengan tanggal dan waktu dalam basis data sangat penting untuk banyak aplikasi, dari melacak aktivitas pengguna hingga menjadwal acara.

Sekarang, sebagai Anda terus melanjutkan perjalanan pemrograman Anda, Anda akan menemukan bahwa fungsi-fungsi ini sangat berguna. Mereka seperti pisau Swiss Army dalam kotak peralatan basis data Anda untuk manipulasi waktu. Tetap latih, terus jelajah, dan sebelum Anda mengetahui, Anda akan menjadi seorang penguasa waktu di dunia basis data!

Credits: Image by storyset