Ay farkı arasında MySQL tarihleri
2 tarih saat alanları arasındaki ay sayısını hesaplamak için arıyorum.
Unix zaman damgası ve 2 592 000 tarafından bölünen (saniye) ve içinde MySQL toplamaktan daha iyi bir yolu var mı?
CEVAP
Ay-fark herhangi iki tarih arasında:
Bu henüz söz konusu olmamıştır şaşırdım:
MySQL TIMESTAMPDIFF() fonksiyonuna bir göz var.
Bu ne sağlar mı geçişte iki TIMESTAMP DATETIME değerleri (hatta DATE MySQL otomatik olarak dönüştürmek) gibi birim zaman istediğiniz için temel bir fark.
İlk parametre birim olarak MONTH belirtebilirsiniz:
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- Outputs: 0
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- Outputs: 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- Outputs: 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- Outputs: 7
Temelde ay parametre listesindeki ilk tarihten itibaren geçen sayısını alır. Bu çözüm, otomatik olarak her ay, gün (28,30,31) değişen miktar olarak dikkate artık yıl-alarak telafi eder; herhangi bir şey hakkında endişelenmenize gerek yok.
Ay-fark hassasiyetle:
Eğer geçen ay sayısını ondalık hassas tanıt istersen biraz daha karmaşık, ama bunu yapabilirsiniz.
SELECT
TIMESTAMPDIFF(MONTH, startdate, enddate)
DATEDIFF(
enddate,
startdate INTERVAL
TIMESTAMPDIFF(MONTH, startdate, enddate)
MONTH
) /
DATEDIFF(
startdate INTERVAL
TIMESTAMPDIFF(MONTH, startdate, enddate) 1
MONTH,
startdate INTERVAL
TIMESTAMPDIFF(MONTH, startdate, enddate)
MONTH
)
startdate enddate tarih parametrelerini nerede, bir komut dosyasından giriş parametreleri olarak bir tablo veya iki tarih sütunlarından olsun:
Örnekler:
With startdate = '2012-05-05' AND enddate = '2012-05-27':
-- Outputs: 0.7097
With startdate = '2012-05-05' AND enddate = '2012-06-13':
-- Outputs: 1.2667
With startdate = '2012-02-27' AND enddate = '2012-06-02':
-- Outputs: 3.1935

MySQL Sorgu - Bugün ve Son 30 Gün aras...
Iıf arasında performans farkı() ve Eğe...
Mysql iki veritabanları arasında verit...
MySQL "arasında" tümcesi dah...
Nasıl MySQL kullanarak iki tarih arası...