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

zjištění, zda se blíží výročí za n dní v MySql

Jak uvedli jiní, musíte ve svém srovnání ignorovat rok. Funkce DAYOFYEAR() je jedním ze způsobů, jak toho dosáhnout.

Tady je rychlé řešení z hlavy. Během následujících 10 dnů vrátí všechny narozeniny, i když je konec prosince a narozeniny jsou příští rok.

Nezpracovává správně přestupné roky, takže u narozenin na začátku března bude o 1 den pryč, pokud je tento rok přestupným rokem a osoba se nenarodila v přestupném roce nebo naopak. Přestupné roky také způsobí, že počátkem ledna se někdy na konci prosince objeví jeden volný den. Pokud by někdo chtěl přidat opravu na přestupný rok, klidně :)

SELECT birthdate 
FROM Anniversaries 
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10 
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;


  1. Číselný sloupec MySQL s omezením rozsahu:jak?

  2. Vztahy mezi tabulkami MyISAM Engine (MySQL)

  3. SQL Server, Jak nastavit automatický přírůstek po vytvoření tabulky bez ztráty dat?

  4. Haversine a Laravel