ce n'est pas une question d'être plus pratique ou pas.
Une date se stocke dans un champ au format date.
Point barre.
Ce n'est pas parce que des incapables ont bossés sur ce projet que tu dois nettoyer leurs merdes.
ça je suis bien d'accord...Une date se stocke dans un champ au format date.
Point barre.
si c'était si simple que çaCe n'est pas parce que des incapables ont bossés sur ce projet que tu dois nettoyer leurs merdes.
En fait, on espère que tu bosses déjà sur une copie de l'application.Déjà, si j'étais à ta place, je ferais une copie de l'application et de la base puis je passerai en force le champ au format date. Si toutes les dates sont réellement au format yyyy-mm-dd, ca devrait passer sans problème puis après je teste l'application pour voir si elle buge ou pas.
héhé merciBon courage.
Code : Tout sélectionner
#
# Table structure for table 'operations'
#
CREATE TABLE operations (
id_operation int(3) unsigned NOT NULL auto_increment,
date_debut date default NULL,
date_fin date default NULL,
ecart tinyint(3) unsigned default NULL,
PRIMARY KEY (id_operation),
KEY id (id_operation)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
# Dumping data for table 'operations'
#
INSERT INTO operations VALUES("1", "2005-06-05", "2005-06-10", "5");
INSERT INTO operations VALUES("2", "2005-06-05", "2005-06-15", "10");
INSERT INTO operations VALUES("3", "2005-06-05", "2005-06-11", "6");
INSERT INTO operations VALUES("4", "2005-06-05", "2005-06-28", "22");
INSERT INTO operations VALUES("5", "2005-06-05", "2005-06-25", "20");
INSERT INTO operations VALUES("6", "2005-06-05", "2005-07-10", "35");
INSERT INTO operations VALUES("7", "2005-06-05", "2005-06-06", "1");Code : Tout sélectionner
# les critères de tri
# ecart <= 7 -> 'DM'
# ecart <= 15 -> 'SP'
# ecart <= 30 -> 'SS'
# ecart > 30 -> 'MS'
SELECT id_operation, date_debut, date_fin, ecart,
CASE
WHEN DATEDIFF(date_fin,date_debut) <= 7 THEN "DM"
WHEN DATEDIFF(date_fin,date_debut) <= 15 THEN "SP"
WHEN DATEDIFF(date_fin,date_debut) <= 30 THEN "SP"
ELSE "MS" END
AS categorie
FROM operations;Code : Tout sélectionner
SELECT COUNT(*) AS nbre_operations,
CASE
WHEN DATEDIFF(date_fin,date_debut) <= 7 THEN "DM"
WHEN DATEDIFF(date_fin,date_debut) <= 15 THEN "SP"
WHEN DATEDIFF(date_fin,date_debut) <= 30 THEN "SP"
ELSE "MS" END
AS categorie
FROM operations
GROUP BY categorie;ah ça me fait rêver3 | DM
1 | MS
3 | SP