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

Apakah tanggal dalam beberapa periode

Fungsi ini harus melakukan apa yang Anda inginkan. Itu bergantung pada MySQL yang memperlakukan hasil boolean sebagai 1 atau 0 dalam konteks numerik, sehingga MAX panggilan secara efektif menjadi OR dari semua kondisi.

CREATE FUNCTION check_activity(project_id INT, check_date DATE)
RETURNS BOOLEAN
DETERMINISTIC
BEGIN
  RETURN (SELECT MAX(check_date BETWEEN ActiveFrom AND ActiveTo) FROM projects WHERE ProjId = project_id);
END
SELECT check_activity(20, '2018-01-10'), check_activity(20, '2018-02-01')

Keluaran

check_activity(20, '2018-01-10')    check_activity(20, '2018-02-01')
1                                   0

Demo di dbfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai zona waktu server 'CEST' tidak dikenali

  2. mysql pilih dan di mana lebih dari beberapa tabel (sangat rumit)

  3. mengimpor CSV ke phpmyadmin

  4. Mengapa hasil saya diduplikasi saat menggunakan subquery?

  5. Kesalahan menjalankan mysql_install_db:tidak dapat menemukan ./bin/my_print_defaults