Berechnen Sie am nächsten Werktag in Postgres
Muss ich planen, einige Elemente in einer postgres-Abfrage basierend auf einer angeforderten Liefertermin für eine Bestellung. So zum Beispiel der Auftrag hat eine von Ihnen erbetene Lieferung am Montag (20120319 zum Beispiel), und die Reihenfolge muss vorbereitet werden auf die Vorherige Werktag (20120316).
Gedanken auf die direkte Methode? Ich bin offen für das hinzufügen einer Daten-Tabelle. Ich denke, es muss einen besseren Weg, als eine lange Reihe von case-Anweisungen verwenden:
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben die bisherigen arbeiten Tag:
Wenn Sie möchten, dass der nächste Tag nur umkehren Sie die Abfrage.
min
und>
holiday_table
in Postgres, die ich bin fehlt?Diese bekommt Sie vorhergehende Werktag.
Sollte es schneller zu generieren, nur so viele Tage wie nötig. Ich Generiere eine Woche vor der Lieferung. Das sollte für alle Möglichkeiten.
isodow
als parameter extrahieren ist bequemer alsdow
zu testen, für Werktage.min()
/max()
,ORDER BY /LIMIT 1
, das ist eine Frage des Geschmacks, mit den wenigen Zeilen meiner Abfrage.Erhalten mehrere Kandidaten, Tage absteigend, nicht nur die top-pick, ändern Sie die
LIMIT 1
.Ich die
dday
(Tag der Lieferung), die in einer Unterabfrage, so dass Sie nur über die Eingabe einmal. Sie können jededate
odertimestamp
literal. Es wird gegossen, umdate
oder so.Möchten Sie vielleicht umbenennen, um einige der Kennungen :-).