2011-08-07 3 views
4

J'essaie de faire un peu de filtre anti-spam avec MySQL. Je veux vérifier le dernier enregistrement créé par un utilisateur dans une table et le comparer à l'heure actuelle. L'heure créée est enregistrée sous le format date_created au format mysql datetime.mysql différence

je tryed TIMEDIFF(), mais je ne peux pas le faire fonctionner pour moi, s'il vous plaît aider.

Répondre

3
SELECT count(*) FROM database WHERE date_created> NOW() - INTERVAL 1 HOUR AND user_id=17 

Si cette requête renvoie la valeur non nulle, alors il y a des lignes, créées à la dernière heure de cet utilisateur

+0

je ne peux pas utiliser le temps d'époque insted? NOW() me donne mon heure locale .. – halliewuud

+0

vous êtes à propos de UNIX_TIMESTAMP? Il est étrange de l'utiliser ici si date_created est datetime – RiaD

+1

@halliewuud un peu en retard à la fête, mais vous pouvez utiliser UTC_TIMESTAMP() 'pour obtenir le datetime actuel en UTC. – Nate

1

Pour obtenir le plus récent enregistrement et HOR à l'heure pour l'utilisateur x

SELECT 
    tab.*, 
    TIMEDIFF(NOW(), date_created) as diff 
FROM tab 
WHERE(userid = x) 
ORDER BY date_created DESC 
LIMIT 1 
+0

est 'tab. *,' Vraiment correct? – halliewuud

+0

remplace 'tab' par le nom de la table, comme après' FROM'. Ou utilisez juste '*,' qui devrait fonctionner aussi. – ain

Questions connexes