J'essaie de faire une requête qui renvoie des résultats basés sur un horodatage, disons un intervalle de 30 minutes.
Donc ce que j’ai compris, c’est que je peux
SELECT * FROM x WHERE ts BETWEEN timestamp(now()-3000) AND timestamp(now())
Donc, cela va tout interroger de x avec les horodatages de la colonne ts au cours des 30 dernières minutes.
Cependant, cela ne fonctionne que maintenant () est passé de la marque aaaa-mm-jj HH: 30: 00 car à tout moment cela aboutira à la valeur NULL ... ceci est plutôt encombrant et je ne comprends pas pourquoi cela ne se produit pas soustrayez les friggin minutes de l'heure!
Sil te plait aide moi! Je ne pouvais trouver aucune autre méthode de requête dans les 30 dernières minutes, c'est ce que j'essaie de faire.
Meilleures salutations,
John
SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())
SELECT * FROM x WHERE ts BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();
SELECT * FROM x
WHERE ts BETWEEN TIMESTAMPADD(MINUTE, -30, NOW()) AND NOW();
Tout d’abord, vous devez comprendre que timestamp () renvoie un horodatage Unix en secondes. 3000 secondes ne sont pas 30 minutes, cela devrait être 1800 secondes. essayez ça
Pour moi, ce qui a fonctionné est la requête suivante
select * from x where (now() - ts) < 180000
180000 correspond à 30 minutes, car 6000 ms correspond à 1 minute
Vous devrez utiliser les opérateurs DATE_ADD () et DATE_SUB () pour les dates. Consultez la documentation: http://dev.mysql.com/doc/refman/5.5/fr/date-and-time-functions.html
SELECT * FROM (`yourdb`) WHERE `timestamp` BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();