requete sql sur date

Mammouth du PHP | 620 Messages

02 mai 2013, 15:08

Bonjour,
j’essaie de faire en sorte que sur mon site on affiche aléatoirement un actualité si sa date n'est pas dépassé.
j'ai donc dans ma base un champs date qui contient des dates dans ce format : 02-05-2013

j'ai donc fait cette requête mais elle ne ressort rien. est ce que j m'y prend mal ? :
			$datejour = date('dmY');
			
			$reqact = mysql_query("SELECT * FROM mesactualites WHERE DATE_FORMAT(datefin, '%d%m%y') < $datejour ORDER BY RAND() LIMIT 1");
					 
			while( $result = mysql_fetch_array( $reqact ) )
			{
ici mon actualité
}


Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 16:06

salut,


le champs est bien de type date ?

si oui
SELECT * FROM mesactualites WHERE datefin < now() ORDER BY RAND() LIMIT 1
si le champs n'est pas de type date c'est une erreur :mrgreen:

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 620 Messages

02 mai 2013, 19:56

bon pas de chance dans la base le champs datefin est originalement en varchar (c'est effectivement un erreur)
comment puis-je faire pour convertir toutes les dates qui sont dans ce champs au format date sans perdre quoi que se soit ? est ce possible ? je passerai ensuite ce champs au bon format date.
le champ datefin est au format varchar et chaque date est écrite comme cela : 02-05-2013

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 mai 2013, 20:47

la je te conseil de te faire une procédure stocké qui va créer une nouvelle colonne de type date, ensuite un curseur qui lit la clef primaire + le varchar et dans le traitement tu fait un update du nouveau champs.

une fois fait du drop la colonne varchar et tu renomme le champs date avec le nom d'origine ;)


bon tu peux le faire en php si tu veux, ça dépend du volume de données.

je pense qu'un outils comme phpmyadmin ou heidi sql (enfin un soft qui te permet de gérer une base de donnée mysql) doit te permettre de changer le type de donnée sans perte de donnée. Avoir dans la doc.

@+
Il en faut peu pour être heureux ......