SORU
14 Kasım 2008, Cuma


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
30 Temmuz 2012, PAZARTESİ


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • kndx

    kndx

    11 Mart 2006
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011