PostgreSQL - DATE/TIME Functions and Operators

Hai, para pemrogram yang sedang belajar! Hari ini, kita akan embarkasi pada perjalanan yang menarik melalui dunia tanggal dan waktu di PostgreSQL. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk mengarahkan Anda melalui konsep-konsep ini dengan kesenangan yang saya miliki selama 15 tahun terakhir di kelas. Jadi, ambil papan cat virtual Anda, dan mari kita masuk ke dalam!

Date/Time Functions & Operators

Understanding Date and Time in PostgreSQL

Sebelum kita mulai menjelajahi fungsi dan operator, mari kitaambil sedikit waktu untuk memahami mengapa tanggal dan waktu sangat penting dalam pemrograman. Bayangkan Anda membangun mesin waktu (tidak akan sia-sia kan?). Anda akan perlu mengetahui tepatnya kapan Anda berada dan di mana (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 peristiwa masa depan.

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

AGE(timestamp, timestamp) and AGE(timestamp)

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

Example 1: Calculating Age

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?"

Example 2: Calculating Age from Current Date

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?"

CURRENT DATE/TIME Functions

Fungsi-fungsi ini seperti jam dan kalendar bawaan basis data Anda. Mereka memberitahu Anda kapan waktu saat ini.

Example 3: Getting Current Date and Time

SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;

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

DATE_PART and DATE_TRUNC Functions

DATE_PART seperti mesin waktu yang dapat memperbesar bagian tertentu dari tanggal atau waktu. Sedangkan DATE_TRUNC seperti pengatur waktu - itu membulatkan ke bawah ke unit waktu yang ditentukan.

Example 4: Extracting Parts of a Date

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 apa timestamp ini?" dan "Pukul berapa saat ini timestamp ini?"

Example 5: Truncating a 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 reset menit dan detik ke nol."

EXTRACT Function

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

Example 6: Extracting from a 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 kami.

ISFINITE Functions

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

Example 7: Checking 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 yang nyata?" (ya) dan "Apakah 'infinity' adalah timestamp yang nyata?" (tidak).

JUSTIFY Functions

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

Example 8: Justifying Intervals

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 interval ini dan ekspresikan mereka dalam cara yang lebih standar."

Summary of Functions

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 yang ditentukan
EXTRACT() Mengambil bidang tertentu dari tanggal/waktu
ISFINITE() Memeriksa apakah tanggal/waktu/interval terbatas
JUSTIFY_DAYS() Mengatur hari dalam interval
JUSTIFY_HOURS() Mengatur jam dalam interval
JUSTIFY_INTERVAL() Mengatur seluruh interval

Dan itu adalah, teman-teman! Kita telah bepergian melalui waktu (fungsi) bersama, mengambil bit-bit tanggal, memeriksa keterbatasan tak terbatas, dan bahkan mengatur beberapa interval. Ingat, bekerja dengan tanggal dan waktu dalam basis data sangat penting bagi banyak aplikasi, dari pelacakan aktivitas pengguna hingga penjadwalan peristiwa.

Sebagai Anda terus menjalani perjalanan pemrograman Anda, Anda akan menemukan fungsi-fungsi ini sangat berguna. Mereka seperti pisau Switzerland dalam kotak peralatan manipulasi waktu Anda. Tetap latih, terus jelajahi, dan sebelum Anda tahu, Anda akan menjadi seorang Lord Waktu di dunia basis data!

Credits: Image by storyset