Page 1 sur 1

regexp, syntax ok, mais pas d'execution

Posté : 14 août 2005, 11:17
par Hywan
bonjour :)
j'aimerais me faire une tite page de stats simple.
j'ai pour cela une table 'visits', qui contient des id, dates, et ip. Les dates sont sous le format : dd/mm/YYYY GG:ii (par 14/08/2005 11:14).

je veux trouver tous les ips pour le mois actuel (08). donc je fais une selection de ma table WHERE date et je fais intervenir un regex :
SELECT * FROM `hw_visits` WHERE `date` REGEXP '(\d{2})/08/(\d{4}) (\d{1,2}):(\d{1,2})'
php me valide ce code (pas d'error), sql et pma aussi ! mais il me retourne tout le temps : bool(false);

je ne sais pas pourquoi :s

voici mon code en entier :
$sqlStats = mysql_query("SELECT * FROM `visits` WHERE `date` REGEXP '(\d{2})/".date("d")."/(\d{4}) (\d{1,2}):(\d{2})'") or die(mysql_error());
$stats = mysql_fetch_array($sqlStats);
var_dump($stats);
merci de m'aider :)

Posté : 14 août 2005, 11:40
par Ripat
Si ta colonne est au format date, fais un tour dans la doc, plus particulièrement la fonction month()
http://dev.mysql.com/doc/mysql/fr/date- ... tions.html
MONTH(date)

Retourne le numéro du mois de la date date, dans un intervalle de 1 à 12 :

mysql> SELECT MONTH('1998-02-03');
-> 2

Posté : 14 août 2005, 11:49
par Hywan
`date` est au format varchar(16)
pas date

Posté : 14 août 2005, 12:02
par Cyrano
Alors tu aurais grand intérêt à convertir ce champ en DATETIME après avoir modifié le format des dates enregistrées puisque DATETIME utilise le format yyyy/mm/jj hh:mn:ss

Les fonction de tri sur les dates intégrées en SQL sont infiniment plus pratiques

Posté : 14 août 2005, 14:46
par Hywan
ok merci a tous :) le seul truc chiant c'etait les changements dans la db pour chaque enregistrements (meme faire un programme pour ca :p) enfin bref :)

merci beaucoup pour vos reponses ;o)

Posté : 16 août 2005, 12:18
par Hywan
merci pour tout
voici le resultat : http://64.21.174.128/hwhost/normal/stats
(si l'adresse ne marche plus, contacter moi par email)