คำนวณความแตกต่างระหว่างชุดข้อมูลสองชุดใน MySQL


157

ฉันกำลังจัดเก็บเวลาเข้าสู่ระบบล่าสุดใน MySQL ในdatetimeประเภทยื่น เมื่อผู้ใช้เข้าสู่ระบบฉันต้องการได้รับความแตกต่างระหว่างเวลาเข้าสู่ระบบครั้งล่าสุดและเวลาปัจจุบัน (ซึ่งฉันได้ใช้NOW())

ฉันจะคำนวณได้อย่างไร


คำตอบ:


296

ใช้TIMESTAMPDIFFฟังก์ชั่น MySQL ตัวอย่างเช่นคุณสามารถใช้:

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

ในกรณีของคุณพารามิเตอร์ที่สามของTIMSTAMPDIFFฟังก์ชั่นจะเป็นเวลาเข้าสู่ระบบในปัจจุบัน ( NOW()) พารามิเตอร์ที่สองจะเป็นเวลาล็อกอินครั้งล่าสุดซึ่งมีอยู่ในฐานข้อมูลแล้ว


นั่นคือการอัพเดทข้อมูลเข้าสู่ระบบล่าสุดใช่มั้ย สิ่งที่ฉันต้องการก็เหมือนใน stackoverflow คำถามของคุณโพสต์เมื่อ 2 วินาทีก่อน 30 วินาทีก่อน 2 นาทีที่แล้ว .. ฯลฯ ฉันต้องการฟังก์ชั่นที่คล้ายกัน ตัวอย่างเช่นมีหนึ่งตารางที่บอกว่า REQUESTS (id, message, timestamp) การประทับเวลาในขณะที่จัดเก็บจะเป็นตอนนี้ () ขณะที่ฉันเรียกใช้คิวรีให้เลือก * จากคำขอแทนที่จะแสดงค่าที่ควรแสดง ID ข้อความและจำนวนเวลาที่โพสต์คำขอย้อนหลัง
Devesh Agrawal

1
ในขณะที่ฉันกำลังดำเนินการแบบสอบถาม SELECT TIMESTAMPDIFF (SECOND, NOW (), 'select lastLoginTime จากคำขอที่ id =' 2 '') .. NULL ที่ส่งคืน ความคิดใดทำไม
Devesh Agrawal

ผลลัพธ์ของการเลือก lastLoginTime จากคำขอที่ id = '2' คืออะไร
FSP

เลือก TIMESTAMPDIFF (สองตอนนี้ (), '2012-06-06 08:07:36'); ลองสิ่งนี้!
FSP

ใช่ที่ใช้งานได้ แต่ฉันต้องดึงพารามิเตอร์ที่สองจากตาราง วิธีการบรรลุเป้าหมายนั้น Infact ฉันต้องการหลีกเลี่ยงแบบสอบถามซ้อน ความคิดใด ๆ
Devesh Agrawal

3

สองเซ็นต์ของฉันเกี่ยวกับตรรกะ:

ไวยากรณ์คือ "old date" -: "new date" ดังนั้น:

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

ให้ 30

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

ให้: -40


2

หากชุดข้อมูลเริ่มต้นและปลายทางของคุณอยู่ในวันที่แตกต่างกันให้ใช้ TIMEDIFF

SELECT TIMEDIFF(datetime1,datetime2)

ถ้า datetime1> datetime2 แล้ว

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

ให้: 24:01:00

และ datetime1 <datetime2

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

ให้: -24: 01: 00


หมายเหตุสามารถทำได้เฉพาะกับวันที่มากถึง 839 ชั่วโมง
Caius Jard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.