MySQL'de iki zaman damgası arasındaki farkı saniyeler içinde verecek bir sorgu yapabilmemin bir yolu var mı, yoksa bunu PHP'de yapmam gerekir mi? Ve eğer öyleyse, bunu nasıl yapacağım?
MySQL'de iki zaman damgası arasındaki farkı saniyeler içinde verecek bir sorgu yapabilmemin bir yolu var mı, yoksa bunu PHP'de yapmam gerekir mi? Ve eğer öyleyse, bunu nasıl yapacağım?
Yanıtlar:
TIMEDIFF()Ve TIME_TO_SEC()işlevlerini aşağıdaki gibi kullanabilirsiniz :
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)
UNIX_TIMESTAMP()İşlevi @Amber'ın başka bir yanıtta önerdiği şekilde de kullanabilirsiniz :
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)
TIMESTAMPVeri türünü kullanıyorsanız, değerlerin çağdan ( Kaynak ) bu yana geçen saniye sayısını temsil eden bir tamsayı olarak zaten depolandığı için UNIX_TIMESTAMP()çözümün biraz daha hızlı olacağını tahmin ediyorum . Dokümanlardan alıntı yapmak :TIMESTAMP
Bir sütunda
UNIX_TIMESTAMP()kullanıldığındaTIMESTAMP, işlev, örtük bir “dizeden Unix'e-zaman damgası” dönüşümü olmaksızın dahili zaman damgası değerini doğrudan döndürür.Döndürülen
TIMEDIFF()veri türünüTIMEunutmayın .TIMEdeğerler "-838: 59: 59" ile "838: 59: 59" arasında değişebilir (kabaca 34,96 gün)
Peki ya "TIMESTAMPDIFF":
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff
str_to_date(date_column, '%m/%d/%Y')biçimlendirmesinin düzeltilmesi gereken sütun için TIMESTAMPDIFF işlevi içinde.
TIME_TO_SECmaxes at, 3020399oysa bu doğru değeri döndürüyor.
Not TIMEDIFF()zaman çözüm çalışır datetimesolan az 35 gün arayla!
TIMEDIFF()bir TIMEveri türü döndürür ve TIME için maksimum değer 838: 59: 59 saattir (= 34,96 gün)
unitparametreyi olarak ayarlayınSECOND.