Page 1 sur 1

requete sql sur date

Posté : 02 mai 2013, 15:08
par fabrice88250
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é
}


Re: requete sql sur date

Posté : 02 mai 2013, 16:06
par moogli
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:

@+

Re: requete sql sur date

Posté : 02 mai 2013, 19:56
par fabrice88250
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

Re: requete sql sur date

Posté : 02 mai 2013, 20:47
par moogli
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.

@+