Maison > base de données > tutoriel mysql > Comment puis-je combiner des champs distincts de jour, de mois et d'année dans MySQL pour effectuer des comparaisons de plages de dates ?

Comment puis-je combiner des champs distincts de jour, de mois et d'année dans MySQL pour effectuer des comparaisons de plages de dates ?

Barbara Streisand
Libérer: 2024-12-24 11:58:18
original
995 Les gens l'ont consulté

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

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`)
);
Copier après la connexion

Pour construire une date à partir de ces champs, MySQL fournit les fonctions suivantes :

  • MAKEDATE() : Crée un objet DATETIME à partir d'une année et d'un mois, avec le jour défini à 1.
  • DATE_ADD() : ajoute un intervalle spécifié (par exemple, mois ou jour) à un objet DATETIME.

Pour créer un objet date représentant une date spécifique, ce qui suit les étapes peuvent être utilisées :

  1. Utilisez MAKEDATE() pour créer un objet DATETIME pour le premier jour de l'année donnée :

    MAKEDATE(year, 1)
    Copier après la connexion
  2. Ajoutez le mois à l'objet DATETIME à l'aide de DATE_ADD() :

    DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
    Copier après la connexion
  3. Enfin, ajoutez le jour à l'objet DATETIME en utilisant DATE_ADD() :

    DATE_ADD(..., INTERVAL (day)-1 DAY)
    Copier après la connexion

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';
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal