Mam tabelę z datami rocznic. Chcę zapytania, które zwróci mi wiersze rocznice najbliższych w ciągu najbliższych 10 dni. Na przykład:ustalenie, czy rocznica nadchodzi za n dni w MySql
birthdate
---------
1965-10-10
1982-05-25
SELECT birthdate FROM Anniversaries WHERE mystical_magical_mumbo_jumbo <= 10
+------------+
| birthdate |
+------------+
| 1982-05-25 |
+------------+
1 row in set (0.01 sec)
Chciałbym zachować zapytanie w formie x <= 10
, ponieważ użyję tej liczby 10 w innych częściach zapytania, a jeśli ustawić go do zmiennej, mogę zmienić raz na zawsze, zmieniając zmienną i nie trzeba jej ponownie pisać.
Prawdopodobnie już to wiesz, ale zachowanie wyrażenia w tym formacie może wymusić funkcję po lewej stronie wyrażenia, co uniemożliwi użycie przez MySQL indeksu daty urodzin. –
Czy "jednostronność" ma znaczenie? Jeśli ma postać "10 => x", czy pozwoli na użycie indeksu? – user151841
@ user151841, najlepiej, aby nazwa kolumny znajdowała się po lewej stronie wyrażenia. W tym przypadku możesz zastosować funkcję do 10, aby uzyskać przyszłą datę i zrobić coś takiego: GDZIE data urodzenia> = DATE_FUNCTION (10) '. Jeśli ktoś inny mnie do tego nie pobije, sprawdzę konkretną funkcję i dam ci odpowiedź. –