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

Perbedaan bulan antara tanggal di MySQL

Perbedaan bulan antara dua tanggal tertentu:

Saya terkejut ini belum disebutkan:

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')
-- 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

Ini pada dasarnya mendapatkan jumlah bulan yang telah berlalu dari tanggal pertama dalam daftar parameter. Solusi ini secara otomatis mengkompensasi jumlah hari yang bervariasi dalam setiap bulan (28,30,31) serta memperhitungkan tahun kabisat — Anda tidak perlu khawatir tentang hal itu.

Perbedaan bulan dengan presisi:

Ini sedikit lebih rumit jika Anda ingin memperkenalkan presisi desimal dalam jumlah bulan yang telah berlalu, 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. Cara Menggunakan Kata Sandi Asli Dengan MySQL 5.7

  2. Bagaimana cara mendapatkan ukuran database MySQL untuk database Anda?

  3. Hitung persentil dari keterkinian di MySQL

  4. Tampilkan Kueri SQL Lengkap di Tampilkan Daftar Proses MySQL

  5. Buat objek PHP secara dinamis berdasarkan string