Calculer la différence entre deux datetimes dans MySQL

157

Je stocke la dernière heure de connexion dans MySQL dans un datetimefichier de type. Lorsque les utilisateurs se connectent, je souhaite connaître la différence entre la dernière heure de connexion et l'heure actuelle (que j'utilise NOW()).

Comment puis-je le calculer?

Devesh Agrawal
la source

Réponses:

296

UTILISEZ la TIMESTAMPDIFFfonction MySQL. Par exemple, vous pouvez utiliser:

SELECT TIMESTAMPDIFF(SECOND, '2012-06-06 13:13:55', '2012-06-06 15:20:18')

Dans votre cas, le troisième paramètre de TIMSTAMPDIFFfonction serait l'heure de connexion actuelle ( NOW()). Le deuxième paramètre serait la dernière heure de connexion, qui est déjà dans la base de données.

FSP
la source
C'est pour mettre à jour le dernier droit de connexion ?? ce que je veux, c'est comme dans stackoverflow votre question postée il y a 2 s, il y a 30 s, il y a 2 min .. etc. Je veux un type de fonctionnalité similaire. Par exemple, il y a une table disant DEMANDES (id, message, horodatage). l'horodatage pendant le stockage sera MAINTENANT (). pendant que j'exécute une requête, sélectionnez * à partir des demandes, au lieu d'afficher cette valeur, elle doit afficher l'identifiant, le message et le délai de retour de la demande.
Devesh Agrawal
1
Pendant l'exécution de la requête SELECT TIMESTAMPDIFF (SECOND, NOW (), 'select lastLoginTime à partir des requêtes où id =' 2 '') .. Son retour NULL. Une idée pourquoi ??
Devesh Agrawal
quelle est la sortie de select lastLoginTime à partir des requêtes où id = '2'?
FSP
SELECT TIMESTAMPDIFF (SECOND, NOW (), '2012-06-06 08:07:36'); Essaye ça!
FSP
YEs qui fonctionne, mais j'ai besoin de récupérer le deuxième paramètre de la table. Comment y parvenir. En fait, je veux éviter les requêtes imbriquées. Une idée?
Devesh Agrawal
3

mes deux cents sur la logique:

la syntaxe est "ancienne date" -: "nouvelle date", donc:

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:00', '2018-11-15 15:00:30')

donne 30,

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:55', '2018-11-15 15:00:15')

donne: -40

ingconti
la source
2

Si vos dates de début et de fin sont à des jours différents, utilisez TIMEDIFF.

SELECT TIMEDIFF(datetime1,datetime2)

si datetime1> datetime2 alors

SELECT TIMEDIFF("2019-02-20 23:46:00","2019-02-19 23:45:00")

donne: 24:01:00

et datetime1 <datetime2

SELECT TIMEDIFF("2019-02-19 23:45:00","2019-02-20 23:46:00")

donne: -24: 01: 00

Adi
la source
Remarque, ne peut supporter que des dates jusqu'à 839 heures d'intervalle
Caius Jard