2017-03-24 2 views
0

Ich versuche, alle Geburtstage für die nächste Woche (Mo - So) ab Montag zu bekommen.Alle Geburtstage in der folgenden Woche ab Montag

Die Abfrage sollte Geburtstage für die folgenden Mo - So finden können, unabhängig davon, an welchem ​​Tag die Abfrage ausgeführt wird. Wenn die Abfrage beispielsweise am Dienstag ausgeführt wurde, konnte sie dennoch alle Geburtstage für die folgenden Mo-So anzeigen.

Ich habe folgendes versucht, und es scheint, zu arbeiten, aber ich bin mir nicht sicher, wie es immer am Montag „Start“ zu bekommen:

SELECT * FROM pet 
WHERE 
    birth_date BETWEEN CURRENT_DATE + INTERVAL '7 days' 
    AND CURRENT_DATE + INTERVAL '14 days'; 

Bitte beachte, dass ich diese Antwort von einigen älteren abgeleitet Posten (2011-2013) zu SO. Ich verwende Postgres 9.5, daher bin ich mir nicht sicher, ob es eine neuere, optimierte Methode gibt, dies zu tun.

Vielen Dank im Voraus!

+0

Diese Beiträge erste Antwort zeigt, wie Sie Holen Sie sich nächsten Montag dann fügen Sie 7 hinzu, um diesen Sonntag http://stackoverflow.com/questions/27989762/get-this-weeks-mondays-date-in-postgres zu bekommen – MarkD

Antwort

3

Dies wird Ihnen Montag der folgenden Woche sind Sie in.

Works Montag waren der Beginn der Woche.

select date_trunc('week', current_date +7); 
0

unabhängig von der Wochentag diese Sie jeden Tag der nächsten Woche gibt:

select (date_trunc('week', now()+interval'1 week')::timestamp + (t.days::text||' days')::interval)::date 
from generate_series (0,6) t(days) 

diese zu verwenden, in einer Abfrage:

select t.birthdays 
from pet, 
generate_series(date_trunc('week', birth_date +interval'1 week') , 
      date_trunc('week', birth_date +interval'2 week'),'1 day') t(birthdays) 
Verwandte Themen