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

Bagaimana saya bisa menambahkan hari ke tanggal di MYSQL dalam kueri

Sepertinya Anda ingin baris dengan end_date lebih lambat dari lima hari yang lalu.

Cara terbaik untuk mendapatkannya adalah dengan

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Bisnis menambahkan bilangan bulat ke tanggal tidak berfungsi di MySQL (ini adalah hal Oracle). Jadi, Anda perlu menggunakan INTERVAL n unit sintaks.

Anda akan melihat bahwa klausa WHERE saya di atas secara fungsional setara dengan

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Tapi, formulasi pertama lebih unggul dari yang kedua karena dua alasan.

  1. jika Anda menyebutkan end_date dalam klausa WHERE tanpa membungkusnya dalam perhitungan, kueri Anda dapat mengeksploitasi indeks pada kolom tersebut dan dapat berjalan lebih cepat.
  2. DATE(NOW()) dan CURDATE() keduanya merujuk pada momen pertama hari ini (tengah malam). Tapi CURDATE() sedikit lebih sederhana.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengurai Array PHP Terpisah dalam Javascript

  2. SpringDataJPA menyimpan hubungan OneToOne menjadi Tidak dapat menambah atau memperbarui baris anak:batasan kunci asing gagal

  3. Mengambil data dari database MySQL menggunakan PHP, Menampilkannya dalam bentuk untuk diedit

  4. Bagaimana saya bisa menghilangkan kolom dari pernyataan SELECT saat menggunakannya ke dalam klausa HAVING?

  5. Kesalahan #1066 - Bukan tabel/alias unik di MySQL