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?
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
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
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.
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.