Fonctions de date/heure en MySQL


précédentsommairesuivant

Anniversaires

Enoncé du problème
On désire avoir la liste de tous les utilisateurs dont c'est l'anniversaire aujourd'hui.

On désire aussi connaître leur âge.



On dipose de la table suivante :

  • Utilisateur : liste des utilisateurs
Script de création
Sélectionnez
CREATE TABLE utilisateur (
  id            INT PRIMARY KEY AUTO_INCREMENT,
  nom           INT  NOT NULL,
  dateNaissance DATE NOT NULL
) ;



La requête

Voici la requête qui permet cela :

 
Sélectionnez
SELECT 
  nom, 
  YEAR(CURDATE()) - YEAR(dateNaissance) AS Age

FROM utilisateur
WHERE DATE_FORMAT(dateNaissance, "%d-%m") = DATE_FORMAT(CURDATE(), "%d-%m")



Bien sûr, si on est une année non bissextile, le 1er Mars il faudra souhaiter les anniversaires de ceux nés un 29 février. Pour cela, il faudra compléter la requête.

Voici le code PHP qui permet cela :

 
Sélectionnez
$now = localtime(time(), true) ;

if ((date("d-m") == "01-03") && !is_leap_year($now['tm_year']) ) {
  $sql_query .= 'OR DATE_FORMAT(BirthDay, "%d-%m") = "29-02"' ;
}



Et voici le code de la fonction is_leap_year :

Fonction is_leap_year($year)
Sélectionnez

function is_leap_year($year) {
  return checkdate(02, 29, $year) ;
}

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Pierre Caboche. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.