Maison > base de données > tutoriel mysql > Comment puis-je créer des objets date à partir de champs année, mois et jour distincts dans MySQL ?

Comment puis-je créer des objets date à partir de champs année, mois et jour distincts dans MySQL ?

Linda Hamilton
Libérer: 2025-01-04 22:53:44
original
373 Les gens l'ont consulté

How Can I Create Date Objects from Separate Year, Month, and Day Fields in MySQL?

Création d'objets de date à partir de champs de date disparates dans MySQL

Votre situation difficile, où la représentation de date d'un schéma de base de données est divisée en jours, mois, et les champs année, présente un défi unique pour la manipulation de dates dans SQL. Cependant, en utilisant l'approche suivante, vous pouvez construire efficacement des objets date à partir de ces champs distincts.

Pour créer un objet DATETIME à partir de valeurs entières représentant l'année, le mois et le jour, utilisez la combinaison de MAKEDATE() et DATE_ADD( ) fonctions.

  1. MAKEDATE() : Cette fonction combine l'année et le mois (avec un jour constant de 1) pour produit un objet DATETIME représentant le premier jour de l'année spécifiée.
  2. DATE_ADD() : Cette fonction ajoute un nombre spécifié de mois et de jours (ou d'autres intervalles de temps spécifiés) à un DATETIME donné objet.

En combinant ces fonctions, vous pouvez construire des dates progressivement :

  • Démarrer avec MAKEDATE() pour obtenir l'objet DATETIME pour le premier jour de l'année.
  • Utilisez DATE_ADD() pour ajouter le mois (en soustrayant 1 pour tenir compte de sa représentation entière commençant à 1).
  • Appliquez un autre DATE_ADD() pour ajouter le jour (encore une fois, en soustrayant 1 pour ajuster son nombre entier nature).

Exemple :

SELECT DATE_ADD(DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH), INTERVAL (11)-1 DAY);
Copier après la connexion

Cette requête renvoie l'objet DATETIME pour le 11 mars 2013.

Maintenant, vous pouvez utiliser cette technique pour construire des plages de dates à des fins de comparaison dans vos requêtes SQL :

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ère tous les enregistrements de la table de dates dont les dates se situent entre le 1er janvier 2013 et le 1er janvier 2014.

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