Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menghitung perbedaan antara dua tanggal dalam bulan di MySQL

Lihat TIMESTAMPDIFF() fungsi di MySQL.

Apa yang memungkinkan Anda lakukan adalah memasukkan dua TIMESTAMP atau DATETIME nilai (atau bahkan DATE karena MySQL akan mengonversi otomatis) serta unit waktu yang Anda inginkan untuk mendasarkan perbedaan Anda.

Anda dapat menentukan MONTH sebagai unit dalam parameter pertama:

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- 0
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- 7

Ini pada dasarnya mendapatkan jumlah bulan yang telah berlalu dari tanggal pertama dalam daftar parameter. Solusi ini memperhitungkan jumlah hari yang bervariasi dalam setiap bulan (28,30,31) serta tahun kabisat.

Jika Anda ingin presisi desimal dalam jumlah bulan yang telah berlalu, ini sedikit lebih rumit, tetapi inilah cara Anda melakukannya:

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
  )

Dimana startdate dan enddate adalah parameter tanggal Anda, apakah itu dari dua kolom tanggal dalam tabel atau sebagai parameter input dari skrip:

Contoh:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Backup Best Practices untuk MySQL, MariaDB dan Galera Cluster

  2. Hibernate OneToOne pemuatan lambat dan cascading

  3. MySQL:Cara Mendapatkan Panjang Teks Dalam Kolom

  4. Apakah nama kolom dan tabel peka huruf besar/kecil di MySQL?

  5. Cara Menggunakan AspNet.Identity core di database My Sql