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

Bagaimana cara memeriksa apakah dua rentang tanggal tumpang tindih di mysql?

Jika kami dijamin bahwa date_started , datefinished , $DateA dan $DateB bukan NULL, dan kami dijamin bahwa date_started tidak lebih besar dari date_finished ...

`s` represents `date_started`
`f` represents `date_finished`
`a` represents the smaller of `$DateA` and `$DateB`
`b` represents the larger of `$DateA` and `$DateB`

Secara visual:

      s-----f       overlap
 -----+-----+-----  -------  
  a-b |     |        NO
  a---b     |        YES
  a-----b   |        YES
  a---------b        YES
  a-----------b      YES
      a---b |        YES
      a-----b        YES
      a-------b      YES
      | a-b |        YES
      | a---b        YES     
      | a-----b      YES     
      |     a-b      YES
      |     | a-b    NO

Kami dapat dengan mudah mendeteksi jika tidak ada "tumpang tindih" dari rentang:

( a > f OR b < s )

Dan kita dapat dengan mudah meniadakannya untuk mengembalikan "benar" ketika ada sebuah "tumpang tindih":

NOT ( a > f OR b < s )

Mengubahnya menjadi SQL:

NOT ( GREATEST('{$dateA}','{$dateB}') < p.date_started
      OR LEAST('{$dateA}','{$dateB}') > p.date_finished
    )


  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 Menghubungkan ke Database MySQL atau MariaDB

  2. kolom tambahan mysql dengan nama yang sama dari dua tabel

  3. Menemukan Kota dalam Kilometer 'X' (atau Mil)

  4. ScaleGrid DBaaS Memperluas Layanan Hosting MySQL Melalui AWS Cloud

  5. Unggah gambar ke gumpalan database MySQL di codeigniter