sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg tilføje dage til en dato i MYSQL i en forespørgsel

Det ser ud til, at du vil have rækker med end_date er senere end fem dage siden.

Den bedste måde at få det på er med

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Forretningen med at tilføje heltal til datoer fungerer ikke i MySQL (det er en Oracle-ting). Så du skal bruge INTERVAL n unit syntaks.

Du vil bemærke, at min WHERE-klausul ovenfor funktionelt svarer til

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

Men den første formulering er bedre end den anden af ​​to grunde.

  1. hvis du nævner end_date i en WHERE-sætning uden at pakke den ind i beregninger, kan din forespørgsel udnytte et indeks på den kolonne og kan køre hurtigere.
  2. DATE(NOW()) og CURDATE() begge henviser til dagens første øjeblik (midnat). Men CURDATE() er lidt enklere.


  1. Sådan indsætter du de skjulte feltdata i databasen ved hjælp af php

  2. Indsæt primær nøgle til automatisk stigning i eksisterende tabel

  3. Er det sikkert at sammenligne strenge med 'større end' og 'mindre end' i MySQL?

  4. Hvorfor tillader MySQL eksplicit prædikatlåsning INSERT-sætninger uden for prædikatlåsen