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

Cara menghitung perbedaan tanggal tidak termasuk akhir pekan dan hari libur di MySQL

Anda mungkin ingin mencoba ini:

  1. Hitung jumlah hari kerja (ambil dari di sini )

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1)

    Ini memberi Anda 261 hari kerja untuk tahun 2012.

  2. Sekarang Anda perlu tahu liburan Anda yang bukan di akhir pekan

    SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6

    Hasil dari ini tergantung pada meja liburan Anda.

  3. Kita perlu mendapatkannya dalam satu permintaan:

    SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1) - (SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6)

    Ini seharusnya.

Sunting:Harap diperhatikan bahwa ini hanya berfungsi dengan baik jika tanggal akhir Anda lebih tinggi dari tanggal mulai Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa pengaturan Driver JDBC-mysql untuk penanganan DATETIME dan TIMESTAMP yang waras di UTC?

  2. PHP strtotime():tanggal menunjukkan '1970-01-01 ' setelah konversi

  3. String terpotong pada panjangnya, tetapi tidak ada pemotongan kata yang diperbolehkan

  4. GROUP_CONCAT dengan batas

  5. Ganti kata dalam teks BLOB dengan MySQL