Heim >Datenbank >MySQL-Tutorial >Wie finde ich Ereignisse mit Jahrestagen in den nächsten 14 Tagen (ohne Berücksichtigung des Jahres)?

Wie finde ich Ereignisse mit Jahrestagen in den nächsten 14 Tagen (ohne Berücksichtigung des Jahres)?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-02 21:11:39792Durchsuche

How to Find Events with Anniversaries in the Next 14 Days (Ignoring the Year)?

Wie man Datumsrechnungen durchführt und dabei das Jahr ignoriert

Die Aufgabe besteht darin, Daten auszuwählen, die innerhalb der nächsten 14 Tage einen Jahrestag haben, mit Ausnahme des Jahres Jahr ab der Berechnung.

Beispiel Abfragen

Ansatz 1: Serie von Jahrestagen generieren

WITH anniversaries AS (
  SELECT event_id, event_date,
         (event_date + (n || ' years')::interval)::date AS anniversary
  FROM   event, generate_series(13, 113) n
)
SELECT event_id, event_date
FROM   anniversaries
WHERE  anniversary BETWEEN current_date AND current_date + interval '14' day;

Ansatz 2: Jahrestage berechnen

SELECT event_id, event_date
FROM   event
WHERE  extract(month FROM age(current_date + 14, event_date))  = 0
AND    extract(day   FROM age(current_date + 14, event_date)) <= 14;

Ansatz 3: Verwendung von a Funktion

CREATE OR REPLACE FUNCTION this_years_birthday(_dut date)
  RETURNS date
  LANGUAGE sql AS
$func$
SELECT (date_trunc('year', now()) + ( - date_trunc('year', )))::date
$func$;

SELECT *
FROM   event e
WHERE  this_years_birthday(event_date) BETWEEN current_date
                                             AND (current_date + 14);

Hinweis:

  • Die Ergebnisse der Abfragen sind gleichwertig.
  • Die Leistung der Abfragen kann variieren je nach Größe und Verteilung der Daten.

Das obige ist der detaillierte Inhalt vonWie finde ich Ereignisse mit Jahrestagen in den nächsten 14 Tagen (ohne Berücksichtigung des Jahres)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn