PL/SQL - Date & Time: A Beginner's Guide
Halo sana, para ahli PL/SQL masa depan! Hari ini, kita akan memulai perjalanan yang menarik melalui dunia tanggal dan waktu dalam PL/SQL. Jangan khawatir jika Anda belum pernah menulis satu baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan mengambil langkah ini secara bertahap. Pada akhir panduan ini, Anda akan dapat mengatur tanggal dan waktu seperti seorang profesional!
Memahami Tanggal dan Waktu dalam PL/SQL
Sebelum kita masuk ke detilnya, mari bicarakan mengapa tanggal dan waktu sangat penting dalam pemrograman. Bayangkan Anda sedang membuat aplikasi pengingat ulang tahun atau sistem pemesanan penerbangan. Anda akan selalu bekerja dengan tanggal! Itu di mana fungsi tanggal dan waktu PL/SQL menjadi sangat berguna.
Sejarah Singkat
Tahukah Anda bahwa Oracle, perusahaan yang berada di belakang PL/SQL, telah mengolah tanggal sejak tahun 1970-an? Itu lebih tua dari sebagian besar dari Anda yang membaca ini! Selama tahun-tahun ini, mereka telah memperbaiki penanganan tanggal dan waktu mereka menjadi sangat akurat dan fleksibel.
Field Values for Datetime and Interval Data Types
Mari mulai dengan dasar. Dalam PL/SQL, kita memiliki dua kategori utama untuk mengolah waktu: Datetime dan Interval.
Datetime Data Types
Tipe datetime mewakili titik waktu tertentu. Picturlah mereka sebagai snapshot. Tipe datetime utama adalah:
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- TIMESTAMP WITH LOCAL TIME ZONE
Interval Data Types
Tipe interval mewakili durasi waktu. Picturlah mereka sebagai pengukur jarak antara dua titik waktu. Tipe interval utama adalah:
- INTERVAL YEAR TO MONTH
- INTERVAL DAY TO SECOND
Mari lihat tabel yang menggabungkan jenis-jenis ini:
Tipe Data | Deskripsi | Contoh |
---|---|---|
DATE | Tanggal dengan abad, tahun, bulan, hari, jam, menit, dan detik | 01-JAN-2023 12:00:00 |
TIMESTAMP | Tanggal dan waktu dengan detik fraksional | 01-JAN-2023 12:00:00.000000 |
TIMESTAMP WITH TIME ZONE | Timestamp dengan zona waktu | 01-JAN-2023 12:00:00.000000 -05:00 |
TIMESTAMP WITH LOCAL TIME ZONE | Timestamp relatif terhadap zona waktu sesi | 01-JAN-2023 12:00:00.000000 |
INTERVAL YEAR TO MONTH | Periode waktu dalam tahun dan bulan | INTERVAL '1-3' YEAR TO MONTH |
INTERVAL DAY TO SECOND | Periode waktu dalam hari, jam, menit, dan detik | INTERVAL '2 12:30:00' DAY TO SECOND |
The Datetime Data Types and Functions
Sekarang kita tahu apa itu tipe datetime, mari belajar bagaimana menggunakannya!
Menggunakan DATE
Tipe DATE adalah yang paling sering digunakan. Itu menyimpan abad, tahun, bulan, hari, jam, menit, dan detik.
Mari lihat beberapa contoh:
-- Dapatkan tanggal saat ini
SELECT SYSDATE FROM DUAL;
-- Tambahkan 7 hari ke tanggal saat ini
SELECT SYSDATE + 7 FROM DUAL;
-- Dapatkan perbedaan antara dua tanggal
SELECT TO_DATE('2023-12-31', 'YYYY-MM-DD') - SYSDATE AS days_until_new_year FROM DUAL;
Dalam contoh pertama, kita menggunakan SYSDATE untuk mendapatkan tanggal saat ini. Itu seperti meminta komputer Anda, "Hey, hari ini adalah hari apa?"
Contoh kedua menunjukkan betapa mudahnya melakukan aritmetika tanggal. Kita menambahkan 7 hari ke tanggal hari ini. Bayangkan merencanakan liburan selama seminggu - ini akan sangat berguna!
Contoh ketiga menghitung berapa hari yang tersisa sampai Malam Tahun Baru. Kita menggunakan TO_DATE untuk mengkonversi string menjadi tanggal, kemudian mengurangkan tanggal hari ini.
Menggunakan TIMESTAMP
TIMESTAMP adalah seperti saudara yang lebih akurat DATE. Itu termasuk detik fraksional, yang bagus untuk saat Anda butuh melacak waktu sampai microsecond.
-- Dapatkan timestamp saat ini
SELECT SYSTIMESTAMP FROM DUAL;
-- Tambahkan 3 jam ke timestamp saat ini
SELECT SYSTIMESTAMP + INTERVAL '3' HOUR FROM DUAL;
-- Ekstrak hanya bagian tanggal dari timestamp
SELECT TRUNC(SYSTIMESTAMP) FROM DUAL;
SYSTIMESTAMP memberikan kita tanggal dan waktu saat ini dengan presisi microsecond. Itu seperti memiliki jam superakurat di pergelangan tangan Anda!
Contoh kedua menunjukkan bagaimana kita dapat menambah interval waktu ke timestamp. Ini bisa berguna dalam sebuah konteks di mana Anda melacak berapa lama suatu proses memerlukan waktu untuk selesai.
Contoh terakhir menggunakan TRUNC untuk menghapus bagian waktu dari timestamp, memberikan kita hanya tanggal.
The Interval Data Types and Functions
Interval sangat cocok untuk mengukur durasi waktu. Mari lihat mereka dalam aksi!
INTERVAL YEAR TO MONTH
Tipe interval ini sempurna untuk mengukur periode waktu yang lebih lama, seperti usia atau durasi kontrak.
-- Menghitung usia
SELECT
'John Doe' AS nama,
TO_DATE('1990-05-15', 'YYYY-MM-DD') AS tanggallahir,
SYSDATE AS tanggalsaatini,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' tahun ' ||
EXTRACT(MONTH FROM SYSDATE) - EXTRACT(MONTH FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' bulan' AS usia
FROM DUAL;
Contoh ini menghitung usia seseorang dalam tahun dan bulan. Kita menggunakan EXTRACT untuk mengambil bagian tahun dan bulan dari tanggal, kemudian melakukan aritmetika sederhana. Itu seperti magi - tapi itu hanya penggunaan cerdas PL/SQL!
INTERVAL DAY TO SECOND
Tipe interval ini sangat cocok untuk mengukur durasi waktu yang pendek, seperti waktu yang dibutuhkan untuk menyelesaikan tugas.
-- Menghitung durasi tugas
DECLARE
start_time TIMESTAMP;
end_time TIMESTAMP;
duration INTERVAL DAY TO SECOND;
BEGIN
start_time := SYSTIMESTAMP;
-- Simulasi tugas yang memerlukan waktu
DBMS_SESSION.SLEEP(5);
end_time := SYSTIMESTAMP;
duration := end_time - start_time;
DBMS_OUTPUT.PUT_LINE('Durasi tugas: ' || duration);
END;
/
Dalam contoh ini, kita mengukur berapa lama suatu tugas memerlukan waktu. Kita merekam waktu mulai, melakukan sesuatu (dalam hal ini, kita hanya menunggu 5 detik menggunakan DBMS_SESSION.SLEEP), kemudian merekam waktu selesai. Perbedaan memberikan kita durasi tugas.
Kesimpulan
Selamat! Anda telah mengambil langkah pertama ke dunia tanggal dan waktu dalam PL/SQL. Kita telah melihat jenis data utama, melihat bagaimana bekerja dengan tanggal dan timestamp, dan bahkan merasakan interval.
Ingat, latihan membuat sempurna. Cobalah untuk memainkan contoh ini, ubah mereka, dan lihat apa yang terjadi. Sebelum Anda mengetahui, Anda akan dapat mengatur tanggal dan waktu seperti seorang programmer berpengalaman!
Terus coding, terus belajar, dan terutama, bersenang-senang! Setelah semuanya, waktu berlalu sangat cepat saat Anda bersenang-senang dengan PL/SQL! ?
Credits: Image by storyset