Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggabungkan Medan Hari, Bulan dan Tahun yang Berasingan dalam MySQL untuk Melakukan Perbandingan Julat Tarikh?

Bagaimanakah Saya Boleh Menggabungkan Medan Hari, Bulan dan Tahun yang Berasingan dalam MySQL untuk Melakukan Perbandingan Julat Tarikh?

Barbara Streisand
Lepaskan: 2024-12-24 11:58:18
asal
993 orang telah melayarinya

How Can I Combine Separate Day, Month, and Year Fields in MySQL to Perform Date Range Comparisons?

Menggabungkan Medan Tarikh untuk Perbandingan dalam MySQL

Dalam aplikasi dengan penapis carian berasaskan tarikh, ia boleh menjadi mencabar untuk bekerja dengan skema pangkalan data yang menyimpan komponen tarikh dalam medan berasingan untuk hari, bulan dan tahun. Artikel ini menunjukkan cara untuk menggabungkan medan ini dan mencipta objek tarikh untuk perbandingan dengan julat tarikh yang ditentukan pengguna.

Pertimbangkan struktur jadual "tarikh" berikut:

CREATE TABLE `date` (
  `deposition_id` varchar(11) NOT NULL default '',
  `day` int(2) default NULL,
  `month` int(2) default NULL,
  `year` int(4) default NULL,
  PRIMARY KEY  (`deposition_id`)
);
Salin selepas log masuk

Untuk membina tarikh daripada medan ini, MySQL menyediakan fungsi berikut:

  • MAKEDATE(): Mencipta objek DATETIME dari setahun dan bulan, dengan hari ditetapkan kepada 1.
  • DATE_ADD(): Menambahkan selang waktu tertentu (cth., bulan atau hari) pada objek DATETIME.

Untuk mencipta objek tarikh yang mewakili tarikh tertentu, langkah berikut boleh digunakan:

  1. Gunakan MAKEDATE() untuk mencipta DATETIME objek untuk hari pertama tahun tertentu:

    MAKEDATE(year, 1)
    Salin selepas log masuk
  2. Tambah bulan pada objek DATETIME menggunakan DATE_ADD():

    DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
    Salin selepas log masuk
  3. Akhir sekali, tambahkan hari pada objek DATETIME menggunakan DATE_ADD():

    DATE_ADD(..., INTERVAL (day)-1 DAY)
    Salin selepas log masuk

Dengan menggabungkan fungsi ini, objek tarikh yang lengkap boleh dibina daripada medan hari, bulan dan tahun individu. Objek tarikh ini kemudiannya boleh digunakan untuk perbandingan julat tarikh:

SELECT * FROM `date`
WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY)
BETWEEN '2013-01-01' AND '2014-01-01';
Salin selepas log masuk

Pertanyaan ini akan mendapatkan semula semua rekod dalam jadual "tarikh" di mana tarikh gabungan berada dalam julat yang ditentukan. Dengan menggunakan gabungan MAKEDATE() dan DATE_ADD(), MySQL membolehkan pembangun memanipulasi dan membandingkan tarikh dengan berkesan, walaupun disimpan dalam medan berasingan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Medan Hari, Bulan dan Tahun yang Berasingan dalam MySQL untuk Melakukan Perbandingan Julat Tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan