Panduan Pemula untuk Fungsi Tarikh dan Waktu MySQL

Hai sana, para ahli pangkalan data masa depan! Hari ini, kita akan melangkah ke dalam dunia yang menarik tentang fungsi tarikh dan waktu MySQL. Jangan bimbang jika anda belum pernah menulis baris kode sebelum ini - saya akan menjadi pandu anda yang ramah, dan kita akan mengambil langkah demi langkah. Pada akhir panduan ini, anda akan dapat mengendalikan tarikh dan waktu seperti seorang profesional!

MySQL - Date and Time Functions

Mengapa Fungsi Tarikh dan Waktu Penting

Sebelum kita mendalam, biarkan saya berkongsi cerita pendek. Beberapa tahun yang lalu, salah seorang murid saya sedang membina aplikasi pengingat hari jadi. Dia mengalami kesukaran dalam pengiraan tarikh sehingga dia menemui fungsi tarikh MySQL. Tiba-tiba, aplikasinya dapat memberitahu pengguna berapa hari lagi sehingga hari jadi kawan mereka. Itu seperti sihir! Itu kekuatan pengendalian fungsi ini.

Membiasakan Diri: Tarikh dan Waktu Semasa

mari kita mulakan dengan dasar. MySQL menyediakan beberapa fungsi untuk mendapatkan tarikh dan waktu semasa. Berikut adalah yang paling umum:

Fungsi Keterangan Contoh Output
NOW() Tarikh dan waktu semasa 2023-05-15 14:30:00
CURDATE() Tarikh semasa 2023-05-15
CURTIME() Waktu semasa 14:30:00

Mari lihat bagaimana ia berfungsi:

SELECT NOW(), CURDATE(), CURTIME();

Query ini akan mengembalikan tarikh dan waktu semasa, hanya tarikh, dan hanya waktu. Bagus, kan?

Menyamalkan Output

Fungsi NOW() mengembalikan nilai datetime, yang termasuk tarikh dan waktu. CURDATE() memberikan anda hanya tarikh dalam format 'YYYY-MM-DD', manakala CURTIME() menyediakan waktu dalam format 'HH:MM:SS'.

Mengambil Kebuang Dari Tarikh dan Waktu

Sekarang, mari kita katakan anda ada nilai datetime dan anda mahu mengambil bahagian khusus daripadanya. MySQL menyediakan fungsi berguna untuk ini:

Fungsi Keterangan Contoh Penggunaan Contoh Output
YEAR() Mengambil tahun YEAR('2023-05-15') 2023
MONTH() Mengambil bulan MONTH('2023-05-15') 5
DAY() Mengambil hari DAY('2023-05-15') 15
HOUR() Mengambil jam HOUR('14:30:00') 14
MINUTE() Mengambil minit MINUTE('14:30:00') 30
SECOND() Mengambil saat SECOND('14:30:45') 45

Mari cuba ini:

SELECT
YEAR('2023-05-15') AS tahun,
MONTH('2023-05-15') AS bulan,
DAY('2023-05-15') AS hari,
HOUR('14:30:45') AS jam,
MINUTE('14:30:45') AS minit,
SECOND('14:30:45') AS saat;

Query ini akan secara rapi mengambil setiap bahagian tarikh dan waktu untuk kita.

Aplikasi Dalam Dunia Real

Imagin anda membina laman web yang menunjukkan hari jadi pengguna. Anda boleh menggunakan fungsi MONTH() dan DAY() untuk mengambil hanya bulan dan hari daripada hari jadi yang disimpan, meninggalkan tahun. Dengan cara ini, anda boleh mahu pengguna selamat hari jadi tanpa mendedahkan umur mereka!

Penjumlahan dan Penolakan Tarikh

Salah satu hal yang menarik tentang fungsi tarikh MySQL adalah anda boleh melakukan pengiraan dengannya. Mari kita lihat beberapa fungsi untuk ini:

Fungsi Keterangan Contoh Penggunaan
DATE_ADD() Menambah interval ke tarikh DATE_ADD('2023-05-15', INTERVAL 1 DAY)
DATE_SUB() Mengurangkan interval daripada tarikh DATE_SUB('2023-05-15', INTERVAL 1 BULAN)
DATEDIFF() Mencari perbezaan antara tarikh DATEDIFF('2023-05-15', '2023-01-01')

Berikut adalah contoh penggunaannya:

SELECT
DATE_ADD('2023-05-15', INTERVAL 1 DAY) AS esok,
DATE_SUB('2023-05-15', INTERVAL 1 BULAN) AS bulan_lepas,
DATEDIFF('2023-05-15', '2023-01-01') AS hari_sejak_tahun_baru;

Query ini akan menunjukkan tarikh esok, tarikh sebulan yang lalu, dan berapa hari yang telah lalu sejak Tahun Baru.

Kuasa Interval

Dalam fungsi DATE_ADD() dan DATE_SUB(), kita menggunakan kata kunci INTERVAL. Ini sangat fleksibel - anda boleh menambah atau mengurangkan tahun, bulan, hari, jam, minit, dan bahkan saat!

Pemformatan Tarikh dan Waktu

kadang-kadang, anda perlu mempresentasikan tarikh dan waktu dalam format khusus. Itulah di mana fungsi DATE_FORMAT() berguna:

SELECT DATE_FORMAT('2023-05-15 14:30:00', '%W, %M %d, %Y at %h:%i %p') AS tarikh_diformat;

Ini akan mengeluarkan: "Monday, May 15, 2023 at 02:30 PM"

Simbol % diikuti oleh huruf adalah penentukan format. Berikut adalah yang paling umum:

Penentuan Keterangan
%W Nama hari penuh
%M Nama bulan penuh
%d Hari dalam bulan (01-31)
%Y Tahun sebagai nombor 4-digit
%h Jam (01-12)
%i Minit (00-59)
%p AM atau PM

Menggabungkan Segala-ganya

mari kita gabungkan apa yang kita telah belajar dalam contoh praktikal. Imagin anda membina sistem untuk melacak ulang tahun kerja pekerja:

CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
hire_date DATE
);

INSERT INTO employees VALUES
(1, 'Alice', '2020-06-15'),
(2, 'Bob', '2021-03-20'),
(3, 'Charlie', '2019-11-01');

SELECT
name,
hire_date,
YEAR(CURDATE()) - YEAR(hire_date) AS tahun_bekerja,
DATE_ADD(DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))),
INTERVAL IF(CURDATE() > DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))), 1, 0) YEAR)
AS ulang_tahun_berikutnya,
DATEDIFF(
DATE_ADD(DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))),
INTERVAL IF(CURDATE() > DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))), 1, 0) YEAR),
CURDATE()
) AS hari_sehingga_ulang_tahun;
FROM employees;

Query ini melakukan beberapa hal:

  1. Mengira berapa tahun pekerja telah bekerja di syarikat.
  2. Menentukan tarikh ulang tahun kerja mereka berikutnya.
  3. Mengira berapa hari lagi sehingga ulang tahun kerja mereka.

Kesimpulan

Tahniah! Anda telah mengambil langkah pertama ke dunia fungsi tarikh dan waktu MySQL. Kita telah melihat dasar mendapatkan tarikh dan waktu semasa, mengambil bahagian daripada tarikh, pengiraan tarikh, dan pemformatan tarikh untuk paparan.

Ingat, latihan membuat sempurna. Cobalah untuk membuat query sendiri menggunakan fungsi ini. Mungkin bangun aplikasi pengingat hari jadi yang saya sebutkan sebelum ini! Semakin anda bermain dengan fungsi ini, semakin anda akan merasakan kenyamanannya. Dan selalu ingat: di dunia pemrograman, setiap hari adalah peluang baru untuk belajar dan tumbuh. Selamat coding, para master pangkalan data masa depan!

Credits: Image by storyset