sql >> Databáze >  >> RDS >> Mysql

Jak mohu přidat dny k datu v MYSQL v dotazu

Vypadá to, že chcete řádky s end_date je později než před pěti dny.

Nejlepší způsob, jak toho dosáhnout, je pomocí

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Obchod s přidáváním celých čísel k datům nefunguje v MySQL (je to věc Oracle). Musíte tedy použít jednotku INTERVAL n unit syntaxe.

Všimnete si, že výše uvedená klauzule WHERE je funkčně ekvivalentní

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

Ale první formulace je lepší než druhá ze dvou důvodů.

  1. pokud zmíníte end_date v klauzuli WHERE, aniž byste ji zabalili do výpočtů, může váš dotaz využít index v tomto sloupci a může běžet rychleji.
  2. DATE(NOW()) a CURDATE() oba odkazují na první okamžik dneška (půlnoc). Ale CURDATE() je o něco jednodušší.


  1. Vyplňte náhodná data z jiné tabulky

  2. Přístup odepřen; pro tuto operaci potřebujete (alespoň jedno) oprávnění SUPER

  3. Jak resetovat databázi SqLite v Androidu?

  4. Jak ELT() funguje v MariaDB