Comment calculer la différence de dates entre 2 lignes dans mysql

Publié le 19 Décembre 2011

Voilà un problème moins trivial que je le croyais! Je vous explique mon problème j'ai une table avec des enregistrements dont un des champs est une date et j'ai besoin d'effectuer une requête qui me donne la différence de temps entre 2 lignes (pas forcément consécutives). Vous me suivez ? non pas vraiment ...

Voilà à quoi ressemble ma table:

CREATE TABLE orders (
   id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
   dt DATETIME NOT NULL,
   customer_id INT(10) UNSIGNED NOT NULL,
   ....
   PRIMARY KEY(id)
);

J'ai besoin de calculer le temps écouler entre 2 commandes d'un clients. Dit comme ça, ça n'a pas l'air compliqué mais quand on commence à traduite ça en SQL ça fait mal!!

Comme il n'y a pas de lien direct entre les dates il va falloir faire une jointure de la table vers la table elle-même et ajouté une clause WHERE pour sélectionné la date de la commande précédente:

SELECT o.customer_id, po.id AS prev_id, o.id, po.dt AS prev_dt, o.dt, DATEDIFF( o.dt, po.dt ) AS diff_days
FROM orders o
JOIN orders po ON ( o.customer_id = po.customer_id ) 
WHERE po.id
IN (
   SELECT MAX( tmp.id ) 
   FROM orders tmp
   WHERE tmp.id < o.id
   AND tmp.customer_id = o.customer_id
); 

Rédigé par Bliz

Publié dans #MySQL

Repost 0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article