• SQL > Les dates

      SELECT PAR RAPPORT A UNE DATE

      SELECT * FROM ma_table WHERE colonne > date('2019-09-16')

       

      SELECT * FROM ma_table WHERE year(colonne) > date('2019-09-16') AND month(colonne) > date('2019-09-16')
      

      LES TYPES DE DATE

      Type DATE : "AAAA-MM-JJ"

      CURDATE() et CURRENT_DATE() retournent la date courante au format "AAAA-MM-JJ".

       

      INSERT INTO ma_table (nom_colonne) VALUES (CURDATE())

      Type TIME : "HH:MM:SS"

      CURTIME() et CURRENT_TIME() retournent l’heure courante au format "HH:MM:SS".

       

      INSERT INTO ma_table (nom_colonne) VALUES (CURTIME())

      Type DATETIME : "AAAA-MM-JJ HH:MM:SS"

      La fonction NOW() ainsi que CURRENT_TIMESTAMP() retournent la date au format "AAAA-MM-JJ HH:MM:SS".

       

      INSERT INTO ma_table (nom_colonne) VALUES (NOW())

      CONVERTIR DES DATES

      DATE_FORMAT()

      DATE_FORMAT(date, format)

       

      transforme une date donnée au format indiqué.

       

      %d/%m/%Y01/12/2006 (format français)

      %W %e %MMonday 5 December (noms en anglais)

      %X %V2007 51 (année et numéro de la semaine)

       

      SELECT DATE_FORMAT('2006-10-25 14:27:39', '%d/%m/%Y')  25/10/2006

      STR_TO_DATE(date, format)

      transforme la date donnée avec son format que vous devez indiquer en une date de type DATETIME (AAAA-MM-JJ).

       

      SELECT STR_TO_DATE('25/10/2006 14:27:39','%d/%m/%Y %T')  2006-10-25 14:27:39

       

      %T est l’heure au format HH:MM:SS.

      TIME_TO_SEC() : convertir une heure en secondes

      TIME_TO_SEC(heure)

       

      SELECT TIME_TO_SEC('05:30:00')  19800

      UNIX_TIMESTAMP() : convertir une date en timestamp

      UNIX_TIMESTAMP(date) (date peut être de type DATE ou DATETIME).

       

      SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00')  875996580

      MAKEDATE() : création de date

      MAKEDATE(année, jourdelannee)

       

      crée une date au format DATE (AAAA-MM-JJ) à partir de deux éléments : l’année et le jour de l’année.

       

      SELECT MAKEDATE(2004,365)  2004-12-31

      MAKETIME() : création de temps

      MAKETIME(heure, minutes, secondes)

       

      crée une heure au format TIME (HH:MM:SS) à partir de 3 éléments : l’heure, les minutes et les secondes.

       

      SELECT MAKETIME(14,55,20)  14:55:20

      CALCULS ENTRE DATES

      DATEDIFF() : différence entre deux dates

      DATEDIFF(date1, date2)
      SELECT DATEDIFF('2007-01-02', '2007-01-08')  6

       

      calcule le nombre de jours entre date1 et date2. Les dates sont de type DATE ou DATETIME (mais l’heure est ignorée).

      DATE_ADD() : ajouter un intervalle

      DATE_ADD(date, INTERVAL nbre type)
      DATE_ADD('2005-05-15 12:00:00', INTERVAL 5 DAY)  2005-05-20 12:00:00
      DATE_ADD('2000-01-01', INTERVAL 7 YEAR);  2007-01-01
      DATE_ADD('2007-06-15 12:00:00',INTERVAL '2:30:00' HOUR_SECOND) 2007-06-15 14:30:00

      ajoute l’intervalle de temps nbre de type type à la date donnée.

       

      date peut être au format DATE ou au format DATETIME.

      type accepte les valeurs suivantes : HOUR - DAY - WEEK - MONTH - YEAR

       

      ATTENTION : ne pas faire les accords du pluriel > INTERVAL 5 DAYS INTERVAL 5 DAY

      DATE_SUB() : soustraire un intervalle

      DATE_SUB(date, INTERVAL expression type)

       

      soustrait l’intervalle de temps expression du typetype à la date donnée.

      Les arguments sont les mêmes que pour la fonction DATE_ADD()

       

      SELECT DATE_SUB('2004-01-05', INTERVAL 31 DAY);  2003-12-05

       

      SELECT DATE_SUB('2006-10-01', INTERVAL '6-5' YEAR_MONTH);  2000-05-01

       

      ATTENTION : ne pas faire les accords du pluriel !

      INTERVAL 5 DAYSINTERVAL 5 DAY

      Exercices

      Exercice 1

      sélection des pseudos de la table membres qui se sont inscrit (champ inscription) à 22 heures.

       

      - HOUR() retourne le nombre d’heures que vous donnez au format TIME ou DATETIME.

      - MINUTE() retourne le nombre de minutes que vous donnez au format TIME ou DATETIME.

      - SECOND(heure) retourne les secondes.

       

      SELECT pseudo FROM membres WHERE HOUR(inscription) = 22

      Exercice 2

      sélectionner les pseudos de la table membres qui se sont inscrits (champ inscription) il y a plus de 100 jours.

       

      - TO_DAYS(date) retourne le nombre de jours depuis la date 0 jusqu’à la date indiquée.

       

      Exemple : TO_DAYS(’1997-10-07′) --> 729669

       

      SELECT pseudo FROM membres WHERE TO_DAYS(NOW()) - TO_DAYS(inscription) > 100
      

       

      Calculer l’ancienneté d’un membre : différence entre le moment de la requête et celui de l’inscription.

      Optimisation du script de news

      Pour stocker la date à laquelle la news est postée, il faut utiliser un champ de type DATETIME.

       

      Il faut désormais enregistrer les dates au format voulu, soit "AAAA-MM-JJ HH-MM-SS" grâce à la fonction NOW() :

       

      mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', NOW())")

       

      Enfin, l’affichage des news :

       

      <p>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></p>

       

 

Aucun commentaire

 

Laissez un commentaire