Qu'en est-il quelque chose comme ceci:
update your_table
set visible = 0
where your_timestamp_field >= UNIX_TIMESTAMP(subdate(now(), interval 1 hour))
Comme explication, voici une sélection qui pourrait vous aider:
mysql> select now(), subdate(now(), interval 1 hour), UNIX_TIMESTAMP(subdate(now(), interval 1 hour))\G
*************************** 1. row ***************************
now(): 2009-09-17 18:58:31
subdate(now(), interval 1 hour): 2009-09-17 17:58:31
UNIX_TIMESTAMP(subdate(now(), interval 1 hour)): 1253203111
1 row in set (0.00 sec)
ici:
- maintenant() obtient la date et l'heure
- le
subdate()
donne 1 heure avant maintenant
- et
unix_timestamp()
convertit que un timestamp unix
Vous pouvez également faire un soustractions de 3600 secondes UNIX_TIMESTAMP(now())
, au lieu d'utiliser SUBDATE ... Mais j'aime l'appel SUBDATE: Je trouve plus facile à comprendre que vous IMMEDIATEMENT voulez 1 heure (et non pas un nombre magique comme 3600)
Comment puis-je l'utiliser comme un peu de code PHP? – CLiown
Vous pouvez utiliser cette requête avec 'mysql_query' (ou les équivalents mysqli ou PDO), comme vous le faites maintenant - la seule chose est que vous n'avez pas besoin de faire de calculs du côté PHP: tout est fait par ça une requête. –