Pandangan Awal Mengenai PL/SQL - Tarikh & Waktu: Panduan untuk Pemula

Hai sana, para ahli PL/SQL masa depan! Hari ini, kita akan memulakan sebuah perjalanan yang menarik melalui dunia tarikh dan waktu di PL/SQL. Jangan bimbang jika anda belum pernah menulis satu baris kod sebelum ini - saya akan menjadi panduannya yang ramah, dan kita akan mengambil langkah demi langkah. Pada akhir panduan ini, anda akan dapat mengendalikan tarikh dan waktu seperti seorang professional!

PL/SQL - Date & Time

Memahami Tarikh dan Waktu di PL/SQL

Sebelum kita masuk ke dalam detil, mari bicarakan mengapa tarikh dan waktu sangat penting dalam pengaturcaraan. Bayangkan anda sedang membina aplikasi pengingat hari ulang tahun atau sistem bukakan penerbangan. Anda pasti akan kerja dengan tarikh secara berkala! Itulah di mana fungsi tarikh dan waktu PL/SQL berguna.

Sejarah Singkat

Tahukah anda bahawa Oracle, syarikat yang berada di belakang PL/SQL, telah mengendalikan tarikh sejak tahun 1970-an? Itu lebih tua daripada kebanyakan anda yang membaca ini! Dalam tempoh ini, mereka telah meningkatkan penanganan tarikh dan waktu mereka untuk menjadi sangat tepat dan fleksibel.

Nilai Medan untuk Jenis Data Datetime dan Interval

Mari mulakan dengan asas. Dalam PL/SQL, kita ada dua kategori utama untuk mengendalikan masa: Datetime dan Interval.

Jenis Data Datetime

Jenis data datetime mewakili titik khusus dalam masa. Pensejukkan mereka sebagai gambar. Jenis datetime utama adalah:

  1. DATE
  2. TIMESTAMP
  3. TIMESTAMP WITH TIME ZONE
  4. TIMESTAMP WITH LOCAL TIME ZONE

Jenis Data Interval

Jenis data interval mewakili tempoh masa. Pensejukkan mereka sebagai pengukuran jarak antara dua titik masa. Jenis interval utama adalah:

  1. INTERVAL YEAR TO MONTH
  2. INTERVAL DAY TO SECOND

Mari lihat jadual yang menggabungkan jenis-jenis ini:

Jenis Data Keterangan Contoh
DATE Tarikh dengan abad, tahun, bulan, hari, jam, minit, dan saat 01-JAN-2023 12:00:00
TIMESTAMP Tarikh dan waktu dengan saat fraksional 01-JAN-2023 12:00:00.000000
TIMESTAMP WITH TIME ZONE Timestamp dengan zon waktu 01-JAN-2023 12:00:00.000000 -05:00
TIMESTAMP WITH LOCAL TIME ZONE Timestamp relatif kepada zon waktu sesi 01-JAN-2023 12:00:00.000000
INTERVAL YEAR TO MONTH Tempoh masa dalam tahun dan bulan INTERVAL '1-3' YEAR TO MONTH
INTERVAL DAY TO SECOND Tempoh masa dalam hari, jam, minit, dan saat INTERVAL '2 12:30:00' DAY TO SECOND

Jenis Data Datetime dan Fungsi

Sekarang kita tahu apa jenis datetime, mari belajar bagaimana menggunainya!

Menggunakan DATE

Jenis DATE adalah yang paling kerap digunakan. Ia menyimpan abad, tahun, bulan, hari, jam, minit, dan saat.

Mari lihat beberapa contoh:

-- Dapatkan tarikh semasa
SELECT SYSDATE FROM DUAL;

-- Tambah 7 hari ke tarikh semasa
SELECT SYSDATE + 7 FROM DUAL;

-- Dapatkan perbezaan antara dua tarikh
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 tarikh semasa. Itu seperti meminta komputer anda, "Hai, hari ini adalah hari apa?"

Contoh kedua menunjukkan betapa mudahnya melakukan aritmetik tarikh. Kita menambah 7 hari ke tarikh hari ini. Bayangkan merancang cuti mingguan - ini akan sangat berguna!

Contoh ketiga mengira berapa hari lagi hingga Malam Tahun Baru. Kita menggunakan TO_DATE untuk mengubah string menjadi tarikh, kemudian mengurangkan tarikh hari ini.

Menggunakan TIMESTAMP

TIMESTAMP adalah seperti saudara yang lebih tepat DATE. Ia termasuk saat fraksional, yang bagus untuk saat anda perlu mengesan masa ke microsecond.

-- Dapatkan timestamp semasa
SELECT SYSTIMESTAMP FROM DUAL;

-- Tambah 3 jam ke timestamp semasa
SELECT SYSTIMESTAMP + INTERVAL '3' HOUR FROM DUAL;

-- Cabut hanya bahagian tarikh dari timestamp
SELECT TRUNC(SYSTIMESTAMP) FROM DUAL;

SYSTIMESTAMP memberikan kita tarikh dan masa semasa dengan keprecisan microsecond. Itu seperti mempunyai jam super-akurat di pergelangan tangan anda!

Contoh kedua menunjukkan bagaimana kita dapat menambah tempoh masa ke timestamp. Ini boleh berguna dalam senario di mana anda mengesan berapa lama proses mengambil masa untuk selesai.

Contoh terakhir menggunakan TRUNC untuk menghapuskan bahagian masa dari timestamp, memberikan kita hanya tarikh. Ini berguna saat anda hanya peduli dengan hari, bukan waktu tepat.

Jenis Data Interval dan Fungsi

Interval adalah bagus untuk mengukur tempoh masa. Mari lihat mereka dalam aksi!

INTERVAL YEAR TO MONTH

Jenis interval ini adalah sempurna untuk mengukur tempoh masa yang panjang, seperti umur atau tempoh kontrak.

-- Mengira umur
SELECT
'John Doe' AS name,
TO_DATE('1990-05-15', 'YYYY-MM-DD') AS birthdate,
SYSDATE AS current_date,
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 age
FROM DUAL;

Contoh ini mengira umur seseorang dalam tahun dan bulan. Kita menggunakan EXTRACT untuk mendapatkan bahagian tahun dan bulan dari tarikh, kemudian melakukan aritmetik. Itu seperti sihir - tetapi itu hanya penggunaan cerdik PL/SQL!

INTERVAL DAY TO SECOND

Jenis interval ini adalah baik untuk mengukur tempoh masa yang pendek, seperti masa mengambil untuk menyelesaikan tugas.

-- Mengira tempoh tugas
DECLARE
start_time TIMESTAMP;
end_time TIMESTAMP;
duration INTERVAL DAY TO SECOND;
BEGIN
start_time := SYSTIMESTAMP;

-- Simulasi tugas yang mengambil sedikit masa
DBMS_SESSION.SLEEP(5);

end_time := SYSTIMESTAMP;
duration := end_time - start_time;

DBMS_OUTPUT.PUT_LINE('Tempoh tugas: ' || duration);
END;
/

Dalam contoh ini, kita mengukur berapa lama tugas mengambil masa. Kita merekodkan masa mula, melakukan sesuatu (dalam hal ini, kita hanya menunggu 5 saat menggunakan DBMS_SESSION.SLEEP), kemudian merekodkan masa akhir. Perbezaannya memberikan kita tempoh tugas.

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia tarikh dan waktu di PL/SQL. Kita telah meliputi jenis data utama, melihat bagaimana bekerja dengan tarikh dan timestamp, dan bahkan merancang interval.

Ingat, latihan membuat sempurna. Cobalah untuk bermain dengan contoh ini, ubah mereka, dan lihat apa yang terjadi. Sebelum anda tahu, anda akan dapat mengendalikan tarikh dan waktu seperti seorang pengaturcara yang berpengalaman!

Terus kod, terus belajar, dan terutama, bersenang-senang! Akhirnya, masa berlalu cepat saat anda bersenang-senang dengan PL/SQL! ?

Credits: Image by storyset