Page 1 sur 1

regrouper des valeurs par date

Posté : 11 mars 2009, 17:31
par VaN
Bonjour,

je souhaite compter des annonces, par date de publication, sur une certaine fourchette de dates.
CREATE TABLE `annonces` (
`annonce_id` int(11) NOT NULL auto_increment,
`annonce_datetime` datetime NOT NULL,
PRIMARY KEY (`annonce_id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
J'aimerai par exemple obtenir le résultat suivant :

14/01/2009 : 3 (annonces)
15/01/2009 : 2
16/01/2009 : 0
17/01/2009 : 7

Voici mon code :
$from = "2009-01-14 00:00:00";
$to = "2009-03-10 00:00:00";

$annonces = getDataFromQuery("SELECT COUNT(annonce_id) AS nb_annonces, annonce_datetime FROM ".$cfg_prefixe."annonces 
WHERE annonce_datetime >= '".$from."' AND annonce_datetime <= '".$to."' GROUP BY annonce_datetime");
Je pensais que le GROUP BY annonce_datetime allait marcher, mais il me sort ce résultat :
14/01/2009 : 1
14/01/2009 : 1
14/01/2009 : 1
15/01/2009 : 1
15/01/2009 : 1
Comment faire ?

Posté : 11 mars 2009, 17:50
par ouckileou
Ne filtrer que sur la date (jour, mois, année), sans tenir compte de l'heure.

Il y a des fonctions toutes faites pour découper un datetime, regarde dans le manuel.

Posté : 11 mars 2009, 18:12
par dunbar
Salut,
Une piste ?
DATE_FORMAT(annonce_datetime, '%Y-%m-%d')
:wink:

Posté : 11 mars 2009, 19:22
par VaN
Salut,
Une piste ?
DATE_FORMAT(annonce_datetime, '%Y-%m-%d')
:wink:
J'ai trouvé même mieux :
SELECT COUNT(annonce_id) AS nb_annonces, DATE(annonce_datetime) AS annonce_date