PostgreSQL

Postgresql Generate_Series zum Erstellen einer Datumsreihe

Postgresql Generate_Series zum Erstellen einer Datumsreihe

Sie müssen mit der Dateneingabe in jedem Datenbankmanagementsystem vertraut sein. Beim Eingeben von Daten haben Sie möglicherweise keine Zeit und müssen Lücken in Ihren Daten ignorieren oder eine konsistente Reihe von Datensätzen wünschen. In dieser Situation ist PostgreSQL generate_series anwendbar, um das erforderliche Ziel zu erreichen. Wie der Name schon sagt, enthält der Mechanismus dieser Funktion entweder 2 oder 3 Eingänge. ich.e., generate_series ermöglicht es Ihnen, eine Sequenz von Datensätzen mit einem Startpunkt, einem Endpunkt und einem inkrementellen Wert zu generieren (optional). Es funktioniert hauptsächlich mit zwei Datentypen. ich.e., Ganzzahlen und Zeitstempel. Um eine Folge von Datumsangaben zu erstellen, wird die Funktion generate_series auf unterschiedliche Weise verwendet.

Syntax:

>> Generate_series ([start],[stop],[optional Schritt/Intervall]);

Die Beschreibung der Abfragesyntax lautet wie folgt:

Lassen Sie uns eine Vorstellung davon haben, wie die Funktion generate_series() funktionieren kann. Nachfolgend einige elementare Beispiele. Um das Konzept dieser Funktion zu verstehen, müssen wir die postgreSQL-Befehlszeilen-Shell (psql) installieren und öffnen.

Nach erfolgreicher Konfiguration und unter Angabe von localhost, Datenbankname, Portnummer und Passwort können wir jede Abfrage auf psql . durchgehen.

Beispiel 01: Generate_series mit DATE plus Integer-Operator

Die folgende Abfrage enthält eine integrierte „DATE“-Funktion zum Abrufen des aktuellen Datums. Wobei „a“ der bereitgestellte Operator ist. Die Funktion dieses Operators besteht darin, diese bestimmte Zahl (Intervall) im Tagesteil des Datums hinzuzufügen. Oder anders gesagt, in bestimmten Abständen werden Tage verschoben und im Datum angezeigt. In der Ausgabe wird jeden Tag das Intervall „9“ hinzugefügt, d.h.e., 9+9=18, dann 27 usw., bis die Summe von 40 erreicht ist.

>> SELECT aktuelles_DATE + s.a AS-Daten FROM Generate_series(0,40,9) AS s(a);

Beispiel 02: Verwenden des aktuellen Datums zum Generieren von Datumsreihen

Um Datumsreihen mit Hilfe des aktuellen Datums zu generieren, verwenden wir die Funktion now(), die das aktuelle Datum automatisch vom System übernimmt takes. Sie können sehen, dass die entsprechende Ausgabe das Datum bis zu 4 Tage anzeigt. Dies liegt daran, dass wir die Ausführung eingeschränkt haben, indem wir dem aktuellen Datum 4 Tage hinzugefügt haben. Da wir die Intervallzeit auf 1 Tag angegeben haben, wird jedes Datum um 1 Addition in Tag erhöht

>> Wählen Sie * aus generate_series(now(), now() + '4 days', '1 day');

Beispiel 03: Generieren von Datumsreihen mit Zeitstempeln

Zeitstempel von Stunden: Diese Funktion verwendet auch den Datentyp von Zeitstempeln. Der Zeitstempel ist im Grunde eine Zeichenfolge, die die Uhrzeit und das Datum eines zugehörigen Tages angibt. Die entsprechende Funktion erleichtert dem Benutzer die Angabe von Daten zwischen den beiden Daten, die wir in der Abfrage vorhergesehen haben. Die Liste der Zeitstempel von Datum 7 bis 11 mit einem Zeitstempel alle 5 Stunden wird erhalten.

>> select * from generate_series('2021-3-7 00:00' ::timestamp,'2021-3-11 12:00', '5 Stunden');

Die Abfrage wird, wie oben erwähnt, auch verwendet, um Minuten und Sekunden mit Stunden hinzuzufügen, um einen besseren Zeitstempel zwischen den Tagen des relevanten Zeitstempels zu erhalten.

Zeitstempel von Tagen: In dem übersteigenden Beispiel haben wir gesehen, dass der Zeitstempel verwendet wird, um Daten zwischen den beiden entsprechenden Daten anzuzeigen, die wir mit der Änderung in Stunden inkrementiert um 5 . angegeben haben. Im aktuellen Beispiel sehen wir den Zeitstempel in Tagen. Tage werden mit 2 inkrementiert, da wir eine 2-Tage-Lücke in der jeweiligen Ausgabe eingeleitet haben.

>> select * from generate_series('2021-03-01'::timestamptz,'2021-03-19'::timestamptz,'2 days');

Beispiel 04: Generieren bestimmter Monatsdaten mit date_trunc

Erster Tag des Monats

Wenn wir das erste Datum des aktuellen Monats generieren möchten, verwenden wir die unten angehängte Abfrage.Die hier verwendete eindeutige Funktion ist date_trunc , die das Datum auf die angegebene Genauigkeit kürzt.ich.e. jetzt()

>> select date_trunc('Monat',now());

      Ultimo

Der gleiche date_trunc-Ansatz generiert den letzten Tag des Monats.

>> select date_trunc('month',now()) + '1 month'::interval - '1 day'::interval as end_of_month;

Mitte des Monats

Monatsmitte wird durch Änderung in der vorherigen Abfrage erhalten obtained. Wir verwenden die Mittelwertfunktion, um das jeweilige Ziel zu erhalten. Oder wir ziehen 17 Tage vom letzten ab.

>> select date_trunc('month',now()) + '1 month'::interval - '17 days'::interval as mid_of_month;

Beispiel 05: Generieren von Terminen mit kalenderbezogenen Daten

Hier kommt das Beispiel für die Verwendung von Kalenderdaten. Wir werden das Schaltjahr kennenlernen, d. h.e., Gesamtzahl der Tage im Februar-Monat.„t“ bedeutet wahr bedeutet, dass Jahr ein Schaltjahr ist, und für „f“ ist es falsch, „dow“ steht für die Wochentage. Die Spalte „Feb“ enthält die Gesamtzahl der Tage im Monat. „Tag“ bezeichnet Jans ersten Tag eines jeden Jahres. Nach Recherchen beginnen die ISO-Wochen am Montag, und die erste Woche eines Jahres enthält den 5. Januar des Jahres.

>> select date::date,extract('isodow' from date) as dow,to_char(date, 'dy') as day,extract('iso year' from date) as "iso year", extract('week' ab Datum) als Woche,Auszug('Tag'von (Datum + Intervall '2 Monate - 1 Tag'))als Februar,Auszug('Jahr' von Datum) als Jahr,Auszug('Tag' von (Datum + Intervall ' 2 Monate - 1 Tag')) = 29als Sprung von generate_series(date '2010-01-01', date '2020-03-01', Intervall '1 Jahr') als t(date);

Isodow ist der „ISO“-Standard-Wochentag. Die Abfrage wird von 2010 bis 2020 ausgeführt und jeden Monat, jede Woche und jeden Tag des Jahres bearbeitet.

Beispiel 06: Generieren einer Reihe von bestimmten Datums- und Tagesnummern in der Woche

In dieser Abfrage erfassen wir Datums- und Tagesnummern, indem wir Tage in einer Woche filtern. Wir werden die Wochentage numerisch berücksichtigen. Zum Beispiel von 0 bis 6. Wobei 0 für Sonntag und 6 für Samstag steht. In dieser Abfrage sehen Sie, dass wir eine Bedingung angewendet haben, um Datums- und Tagesnummern zu bringen, die nicht in 2 und 5 liegen. Zum Beispiel war es am 20. Februar Samstag, also ist die Zahl 6 . erschienen.

>> mit Tagen als (wähle dd, extrahiere(DOW from dd) dw from generate_series('2021-02-20'::date,'2021-03-05'::date,'1 day'::interval) dd ) wählen Sie *von   Tagen, an denen  dw nicht in (2,5) liegt;

Fazit

Der Artikel behandelt, wie oben erwähnt, die meisten grundlegenden Funktionen im Zusammenhang mit der Generierung von Reihen zum Erstellen von Datumsreihen. Ausführliche Beispiele, die in jedem Aspekt besprochen werden, sind so aussagekräftig, dass sie das Wissen Ihres jeweiligen Artikels eskalieren.

Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...