Apakah ada cara saya bisa membuat kueri di MySQL yang akan memberi saya perbedaan antara dua cap waktu dalam hitungan detik, atau apakah saya perlu melakukannya di PHP? Dan jika demikian, bagaimana saya akan melakukan itu?
100
Anda dapat menggunakan TIMEDIFF()
dan TIME_TO_SEC()
fungsi sebagai berikut:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Anda juga dapat menggunakan UNIX_TIMESTAMP()
fungsi seperti yang disarankan @Amber dalam jawaban lain:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Jika Anda menggunakan TIMESTAMP
tipe data, saya kira UNIX_TIMESTAMP()
solusinya akan sedikit lebih cepat, karena TIMESTAMP
nilai sudah disimpan sebagai bilangan bulat yang mewakili jumlah detik sejak zaman ( Sumber ). Mengutip dokumen :
Saat
UNIX_TIMESTAMP()
digunakan padaTIMESTAMP
kolom, fungsi tersebut mengembalikan nilai stempel waktu internal secara langsung, tanpa konversi implisit "string-to-Unix-timestamp".Perlu diingat bahwa
TIMEDIFF()
tipe data pengembalianTIME
.TIME
nilai dapat berkisar dari '-838: 59: 59' hingga '838: 59: 59' (kira-kira 34.96 hari)
unit
parameternya keSECOND
.Bagaimana dengan "TIMESTAMPDIFF":
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff
sumber
str_to_date(date_column, '%m/%d/%Y')
dalam fungsi TIMESTAMPDIFF untuk kolom yang perlu dikoreksi formatnya.TIME_TO_SEC
maxes out3020399
sedangkan ini mengembalikan nilai yang benar.Jika Anda menginginkan perbedaan yang tidak ditandai, tambahkan di
ABS()
sekitar ekspresi.Alternatifnya, Anda dapat menggunakan
TIMEDIFF(ts1, ts2)
dan kemudian mengubah hasil waktu menjadi detik denganTIME_TO_SEC()
.sumber
Perhatikan bahwa
TIMEDIFF()
solusi hanya bekerja ketikadatetimes
yang kurang dari 35 hari terpisah!TIMEDIFF()
mengembalikanTIME
tipe data, dan nilai maksimum untuk TIME adalah 838: 59: 59 jam (= 34,96 hari)sumber