Przechowuję czas ostatniego logowania w MySQL w polu datetimetypu -type. Kiedy użytkownicy się logują, chcę zobaczyć różnicę między czasem ostatniego logowania a aktualnym czasem (z którego korzystam NOW()).
W twoim przypadku trzecim parametrem TIMSTAMPDIFFfunkcji byłby aktualny czas logowania ( NOW()). Drugim parametrem byłby czas ostatniego logowania, który jest już w bazie danych.
To znaczy zaktualizować ostatnie logowanie? to, czego chcę, to jak w stackoverflow Twoje pytanie zostało wysłane 2s temu, 30s temu, 2 minuty temu ... itd. Chcę podobnego rodzaju funkcjonalności. Na przykład jest jedna tabela z napisem REQUESTS (identyfikator, komunikat, znacznik czasu). sygnatura czasowa podczas przechowywania będzie TERAZ (). gdy uruchamiam zapytanie, wybieram * z żądań, zamiast wyświetlać tę wartość, powinien wyświetlać identyfikator, komunikat i ile czasu zostało wysłane.
Devesh Agrawal
1
Podczas wykonywania zapytania SELECT TIMESTAMPDIFF (SECOND, NOW (), 'select lastLoginTime z żądań, gdzie id =' 2 '') .. Zwraca NULL. Każdy pomysł, dlaczego?
Devesh Agrawal
jakie jest wyjście select lastLoginTime z żądań, gdzie id = '2'?
FSP
SELECT TIMESTAMPDIFF (SECOND, NOW (), '2012-06-06 08:07:36'); Spróbuj tego!
FSP
TAK, że działa, ale muszę pobrać drugi parametr z tabeli. Jak to osiągnąć. W rzeczywistości chcę uniknąć zagnieżdżonych zapytań. Dowolny pomysł?
Odpowiedzi:
UŻYJ
TIMESTAMPDIFF
funkcji MySQL. Na przykład możesz użyć:W twoim przypadku trzecim parametrem
TIMSTAMPDIFF
funkcji byłby aktualny czas logowania (NOW()
). Drugim parametrem byłby czas ostatniego logowania, który jest już w bazie danych.źródło
moje dwa grosze z logiki:
składnia to „stara data” -: „nowa data”, więc:
daje 30,
daje: -40
źródło
Jeśli data rozpoczęcia i zakończenia przypadają w różne dni, użyj funkcji TIMEDIFF.
jeśli datetime1> datetime2 to
daje: 24:01:00
i datetime1 <datetime2
daje: -24: 01: 00
źródło