Erste date-Liste in einem Bereich in PostgreSQL
Ich würde gerne die Liste der Tage zwischen den beiden Daten (einschließlich Ihnen) in einem PostgreSQL-Datenbank. Zum Beispiel, wenn ich einen hätte:
- start-Datum: 29 Juni 2012
- end Datum: 3. Juli 2012
dann das Ergebnis sollte sein:
29 june 2012
30 june 2012
1 july 2012
2 july 2012
3 july 2012
Was wäre der beste Weg, dies zu tun, in PostgreSQL?
Dank.
InformationsquelleAutor der Frage Javi | 2012-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
oder noch kürzer:
InformationsquelleAutor der Antwort maniek
Als
timestamp
:oder gegossen, um
date
:InformationsquelleAutor der Antwort Clodoaldo Neto
Dies sollte es tun:
Wenn Sie nicht möchten, wiederholen Sie das Startdatum in der untergeordneten select-Anweisung werden die Dinge ein wenig komplizierter:
(Siehe maniek-Antwort für eine viel bessere version von "no-repeat" problem)
InformationsquelleAutor der Antwort a_horse_with_no_name
Für Dinge wie diese seine in der Regel praktisch, ein Daten-Tabelle in das system.
Nur wie eine zahlen-Tabelle können Sie sehr nützlich sein und schneller zu bedienen als das generieren der Daten über das Fliegen, vor allem, wenn Sie Skalierung auf großen Datenmengen.
Solches Datum-Tabelle von 1900 bis 2100 wird sehr klein sein, so gibt es nicht viel über Kopf in einen Speicher.
Edit: keine Ahnung warum, das ist immer gewählt, wird es wohl das beste für die performance. Plus es hat so viele andere Vorteile. Wollen link Bestellungen zu ein Viertel Leistung zahlen? Eine einfache Verknüpfung zwischen den Tabellen. (Um.OrderDate -> Termine.Datum -> Termine.Quartal -> PerformanceTotal.Quartal) etc. Dasselbe gilt für den Umgang mit Arbeits-Tagen, wie die letzten Werktag eines Monats oder am ersten Dienstag des Vormonats. Wie die zahlen der Tabelle, würde ich dringend empfehlen!
InformationsquelleAutor der Antwort BJury
InformationsquelleAutor der Antwort ASGAR HUSSAIN
Wenn Sie bereits die Datenbank, die Sie Abfragen möchten:
Dieser Folge:
InformationsquelleAutor der Antwort Burhan Khalid
Wenn der Datumsbereich soll kommen aus einer Tabelle Ausdruck, könnten Sie mit dem folgenden Konstrukt:
Die Modelle werden benötigt, weil generate_series() nicht Datum Argumente.
InformationsquelleAutor der Antwort wildplasser
Diese PLpg/SQL-Funktion würde den trick tun:
InformationsquelleAutor der Antwort Miljen Mikic