Création d'une date à partir de champs individuels jour, mois et année dans MySQL
Dans les applications de base de données, il est souvent nécessaire de construire des dates à partir de champs distincts pour le jour, le mois et l’année à des fins de comparaison ou d’autres traitements. Cela devient particulièrement pertinent lorsque le schéma de base de données est hérité d'une conception précédente qui a choisi de stocker les composants de date de manière non standard.
Énoncé du problème (révisé)
Cette question concerne la création d'un objet date en SQL à partir d'une table avec des champs individuels pour « jour », « mois » et « année » plutôt qu'un champ de date consolidé. L'objectif est de comparer ces dates avec les plages de saisie de l'utilisateur à l'aide de la clause BETWEEN.
Schéma de la base de données
Voici le schéma fourni pour la table « date » :
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;
Solution
Pour créer un objet date à partir de ces composants individuels, la logique SQL suivante peut être utilisée :
Exemple de requête
Pour sélectionner toutes les lignes de la table 'date' où la date construite se situe dans une plage spécifique :
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 renverra toutes les lignes où la date combinée construite à partir des champs individuels est entre les deux dates fournies.
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!