Combinaison de champs de date pour comparaison dans MySQL
Dans les applications avec des filtres de recherche basés sur la date, il peut être difficile de travailler avec un schéma de base de données qui stocke les composants de date dans des champs séparés pour le jour, le mois et l'année. Cet article montre comment combiner ces champs et créer un objet date pour comparaison avec les plages de dates spécifiées par l'utilisateur.
Considérez la structure de table « date » suivante :
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`) );
Pour construire une date à partir de ces champs, MySQL fournit les fonctions suivantes :
Pour créer un objet date représentant une date spécifique, ce qui suit les étapes peuvent être utilisées :
Utilisez MAKEDATE() pour créer un objet DATETIME pour le premier jour de l'année donnée :
MAKEDATE(year, 1)
Ajoutez le mois à l'objet DATETIME à l'aide de DATE_ADD() :
DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
Enfin, ajoutez le jour à l'objet DATETIME en utilisant DATE_ADD() :
DATE_ADD(..., INTERVAL (day)-1 DAY)
En combinant ces fonctions, un objet date complet peut être construit à partir de champs individuels de jour, de mois et d'année. Cet objet date peut ensuite être utilisé pour des comparaisons de plages de dates :
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';
Cette requête récupérera tous les enregistrements de la table "date" où la date combinée se situe dans la plage spécifiée. En utilisant la combinaison de MAKEDATE() et DATE_ADD(), MySQL permet aux développeurs de manipuler et de comparer efficacement les dates, même lorsqu'elles sont stockées dans des champs séparés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!