Maison > base de données > tutoriel mysql > Comment construire une date dans MySQL à partir de champs jour, mois et année séparés ?

Comment construire une date dans MySQL à partir de champs jour, mois et année séparés ?

Linda Hamilton
Libérer: 2024-12-25 07:46:54
original
292 Les gens l'ont consulté

How to Construct a Date in MySQL from Separate Day, Month, and Year Fields?

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

Solution

Pour créer un objet date à partir de ces composants individuels, la logique SQL suivante peut être utilisée :

  1. Construisez une date à partir de l'année et du mois : utilisez la fonction MAKEDATE() avec un jour constant de 1 pour obtenir un DATETIME représentant le premier jour de l'année et du mois spécifiés.
  2. Ajuster la date avec le mois et le jour : appliquez le Fonction DATE_ADD() pour ajouter les valeurs du mois et du jour en fonction de la date/heure initiale.

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

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!

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