Recuperer les insertions récentes dans une table

Recuperer les insertions récentes dans une table - SQL/NoSQL - Programmation

Marsh Posté le 28-12-2010 à 20:11:46    

Salut,
 
je cherche à extraire les insertions ayant moins d'un jour, d'une semaine, d'un mois, etc d'une table dans mysql. J'ai un champ date_created dans ma table topics, ou je store le timestamp au moment de l'insertion (fonction php time() ).
 
J'ai trouve dans la doc mysql la fonction datediff:  
 
j'ai donc fait select * from topics where datediff(NOW(),date_created) < 8 (pour la semaine), mais ca ne marche pas. L'exemple dans la doc est sous le format aaaa-mm-dd, pas en timestamp, y'aurait moyen de l'utiliser avec un timestamp, ou une autre methode?
 
Thanks :)

Reply

Marsh Posté le 28-12-2010 à 20:11:46   

Reply

Marsh Posté le 28-12-2010 à 22:02:05    

Le champ date_created est sous quel format ?
 
Le risque est que la chaîne de caractère renvoyée par le "time()" de PHP ne soit pas reconnu (ou mal) comme une date. Si tu affiches en SQL ce champ date_created, les valeurs sont correctes ?
(perso, sauf contrainte particulière, je mettrais plutôt un "NOW()" dans la requête plutôt que de générer la date en PHP [:figti] )


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 29-12-2010 à 00:12:54    

c'etait un simple champ de type int pour storer le time(). J'avais essaye le type timestamp mais ca marchait pas alors j'ai laisse tomber et mis un int a la place :)
 
en effet si j'ai fait ca:
SELECT DATE_FORMAT( date_created,  '%W %M %Y' )  
FROM topics
LIMIT 0 , 30
 
ca me retourne NULL... J'ai mal utilisé la fonction ou le time() est mal reconnu?

Reply

Marsh Posté le 29-12-2010 à 00:20:01    

C'est toujours une bonne idée d'utiliser le bon format pour ses colonnes :whistle:  
Il y en a 2 :
DATE -> que la date
DATETIME -> date et heure (jusqu'à la seconde)
 
Si tu essaies de mettre un "2010-07-10" dans un champ DATE, mySQL va bien l'interpréter comme une date. Si tu le met dans un champ INT, mySQL va essayer de la convertir en entier et forcément, ça ne va pas fonctionner [:proy]  
Change le format de ta colonne pour celui dont tu as besoin, ça ira mieux après :)


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 29-12-2010 à 00:24:03    

oui c'est pas faux, bon je rechange en datetime pour voir ce que ca donne :)

Reply

Marsh Posté le 29-12-2010 à 00:30:35    

azkatari a écrit :

oui c'est pas faux, bon je rechange en datetime pour voir ce que ca donne :)

Dans un 1er temps, teste avec une date en dur, tu t'occuperas de la fonction "time()" ensuite :)  
(ou alors, tu mets le "NOW()" directement dans la requête d'insertion, mySQL prendra lui même la date/heure)


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 29-12-2010 à 00:47:54    

OK j'ai teste avec datetime et en effet, ca marche  :whistle:  
ca m'apprendra a etre un peu plus rigoureux avec sql!
 
merci pour ton aide :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed