web-dev-qa-db-fra.com

horodatage de MySQL SELECT (now () - 3000);

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

14
Theveloper
SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())
39
mluebke
SELECT * FROM x WHERE ts BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();
12
ypercubeᵀᴹ
SELECT * FROM x 
WHERE ts BETWEEN TIMESTAMPADD(MINUTE, -30, NOW()) AND NOW();
3
Bhesh Gurung

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 

1
mugetsu

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

1
Aleksandar Pavić

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

0
bdares
SELECT * FROM (`yourdb`) WHERE `timestamp` BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();
0
musdy