Hitung perbedaan antara dua datetimes di MySQL

157

Saya menyimpan waktu login terakhir di MySQL, datetime-type diajukan. Ketika pengguna masuk, saya ingin mendapatkan perbedaan antara waktu login terakhir dan waktu saat ini (yang saya gunakan NOW()).

Bagaimana saya bisa menghitungnya?

Devesh Agrawal
sumber

Jawaban:

296

GUNAKAN TIMESTAMPDIFFfungsi MySQL. Misalnya, Anda dapat menggunakan:

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

Dalam kasus Anda, parameter TIMSTAMPDIFFfungsi ketiga adalah waktu login saat ini ( NOW()). Parameter kedua adalah waktu login terakhir, yang sudah ada dalam database.

FSP
sumber
Yaitu untuk memperbarui login terakhir kan ?? apa yang saya inginkan adalah seperti di stackoverflow pertanyaan Anda diposting 2s lalu, 30s lalu, 2 menit yang lalu .. dll. Saya ingin fungsionalitas yang serupa. Misalnya ada satu tabel mengatakan REQUESTS (id, message, timestamp). cap waktu saat menyimpan akan SEKARANG (). saat saya menjalankan kueri, pilih * dari permintaan, alih-alih menampilkan nilai yang seharusnya ditampilkan id, pesan, dan berapa lama permintaan balik dikirim.
Devesh Agrawal
1
Saat saya menjalankan kueri SELECT TIMESTAMPDIFF (KEDUA, SEKARANG (), 'pilih lastLoginTime dari permintaan di mana id =' 2 '') .. Kembali NULL. Tahu kenapa ??
Devesh Agrawal
apa output dari lastLoginTime pilih dari permintaan di mana id = '2'?
FSP
SELECT TIMESTAMPDIFF (SECOND, NOW (), '2012-06-06 08:07:36'); Coba ini!
FSP
YES yang berfungsi, Tetapi saya perlu mengambil parameter kedua dari tabel. Bagaimana mencapainya. Infact saya ingin menghindari permintaan bersarang. Ada ide?
Devesh Agrawal
3

dua sen saya tentang logika:

sintaks adalah "tanggal lama" -: "tanggal baru", jadi:

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

memberi 30,

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

memberi: -40

ingconti
sumber
2

Jika data awal dan akhir Anda pada hari yang berbeda, gunakan TIMEDIFF.

SELECT TIMEDIFF(datetime1,datetime2)

jika datetime1> datetime2 maka

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

memberi: 24:01:00

dan datetime1 <datetime2

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

memberi: -24: 01: 00

Adi
sumber
Catatan, hanya dapat mengatasi tanggal hingga 839 jam terpisah
Caius Jard