Mencipta Tarikh daripada Medan Hari, Bulan dan Tahun Individu dalam MySQL
Dalam aplikasi pangkalan data, keperluan sering timbul untuk membina tarikh dari medan hari, bulan dan tahun yang berasingan untuk perbandingan atau pemprosesan lain. Ini menjadi sangat relevan apabila skema pangkalan data diwarisi daripada reka bentuk sebelumnya yang memilih untuk menyimpan komponen tarikh dalam cara yang tidak standard.
Pernyataan Masalah (Disemak)
Soalan ini berkaitan dengan mencipta objek tarikh dalam SQL daripada jadual dengan medan individu untuk 'hari,' 'bulan' dan 'tahun' dan bukannya medan tarikh disatukan. Objektifnya adalah untuk membandingkan tarikh ini dengan julat input pengguna menggunakan klausa BETWEEN.
Skema Pangkalan Data
Berikut ialah skema yang disediakan untuk jadual 'tarikh':
CREATE TABLE IF NOT EXISTS `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`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Penyelesaian
Untuk mencipta objek tarikh daripada komponen individu ini, logik SQL berikut boleh digunakan:
Contoh Pertanyaan
Untuk memilih semua baris dalam jadual 'tarikh' di mana tarikh yang dibina berada dalam satu titik tertentu julat:
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';
Pertanyaan ini akan mengembalikan semua baris dengan tarikh gabungan yang dibina daripada medan individu adalah antara dua tarikh yang disediakan.
Atas ialah kandungan terperinci Bagaimana untuk Membina Tarikh dalam MySQL dari Medan Hari, Bulan dan Tahun yang Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!