sql >> Databasteknik >  >> RDS >> Mysql

ta reda på om ett årsdag är på väg om n dagar i MySql

Som andra har sagt måste du ignorera årtalet i din jämförelse. Funktionen DAYOFYEAR() är ett sätt att göra det.

Här är en snabb lösning från toppen av mitt huvud. Den kommer att returnera alla födelsedagar inom de närmaste 10 dagarna, även om det är slutet av december och födelsedagen är nästa år.

Den hanterar INTE skottår på rätt sätt, så den kommer att vara ledig med 1 dag för födelsedagar i början av mars om detta år är ett skottår och personen inte är född under ett skottår eller vice versa. Skottår kommer också att göra att födelsedagar i början av januari dyker upp en ledig dag i slutet av december ibland. Om någon vill lägga till skottårskorrigeringen får du gärna :)

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


  1. Hur kan jag hitta en kolumn överallt i SQL Server?

  2. Försöker förstå Hittar inte FULLTEXT-index som matchar kolumnlistans fel

  3. Fatalt fel:Oupptäckt fel:Anrop till odefinierad funktion mysql_pconnect()

  4. LAST_INSERT_ID() MySQL