web-dev-qa-db-fra.com

Calculer le décalage horaire entre 2 dates en minutes

J'ai un champ de temps Timestamp dans ma base de données MySQL qui est mappé à un type de données DATE dans mon bean. Maintenant, je veux une requête permettant d'extraire tous les enregistrements de la base de données pour lesquels la différence entre l'horodatage actuel et celui stocké dans la base de données est supérieure à 20 minutes.

Comment puis-je le faire?

Ce que je veux, c'est:

SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes

Existe-t-il des fonctions MySQL pour cela, ou un moyen de le faire en SQL?

56
Akshay

Je pense que vous pourriez utiliser TIMESTAMPDIFF (unité, datetime_expr1, datetime_expr2) quelque chose comme.

select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
101
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
20
Mouloud

Essaye celui-là:

select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()

REMARQUE: cela devrait fonctionner si vous utilisez le format MySQL DateTime. Si vous utilisez Unix Timestamp (entier), ce serait encore plus simple:

select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60

La fonction UNIX_TIMESTAMP () vous renvoie l'horodatage Unix actuel.

6
itsmeee

J'utilise le code ci-dessous pour aujourd'hui et la date de la base de données.

(TIMESTAMPDIFF(MINUTE,NOW(),EndDate))%60 as Minutes

Ici, nous pouvons utiliserHEURE(pour les heures -% 24),JOUR(pour les jours - pas besoin de%) au lieu deMINUTEsi nous en avons besoin.

0
Deepak Dholiyan