Alternativen zu DATEADD() in PostgreSQL
-
die
DATEADD()
-Funktion in SQL -
Verwenden Sie die Operatoren
+
und-
als Alternative zuDATEADD()
in PostgreSQL -
Verwenden Sie den Datentyp
INTERVAL
als Alternative zuDATEADD()
in PostgreSQL
Dieser Artikel beschreibt die Alternativen zur Funktion DATEADD()
in PostgreSQL.
die DATEADD()
-Funktion in SQL
Angenommen, Sie haben das Herstellungsdatum eines Produkts in Ihrer Datenbank gespeichert, zusammen mit der Anzahl der Tage, die es dauert, bis es abläuft. Wir können dies anhand der folgenden Tabelle demonstrieren:
Create table product
(
name varchar(30) not null,
manufacture_date date,
expires_in int,
constraint PK_PRODUCT primary key (name)
);
Lassen Sie uns nun diese Tabelle mit Beispieldaten eines Produkts füllen:
insert into product values ('Fruit Juice', '2022-08-24', 10);
Ausgang:
Aus diesen Daten wissen wir nur, dass das Produkt in 10 Tagen abläuft, aber wir kennen nicht sein genaues Ablaufdatum. Gibt es eine Möglichkeit, es aus den gegebenen Daten zu berechnen?
Im SQL-Server haben wir die Funktion DATEADD()
, die uns hilft, Datumsintervalle zu einem bestimmten Datum hinzuzufügen. Beispielsweise können wir die folgende Abfrage auf dem SQL-Server ausführen:
SELECT DATEADD(day, 1, '2022-08-26') as Next_Day;
Ausgang:
Die Ausgabe gab Ergebnisse aus der Addition von 1 Tag zum angegebenen Datum zurück. In ähnlicher Weise ermöglicht uns die Funktion DATEADD()
, andere Arten von Datumsintervallen hinzuzufügen, z. B. Monate und Jahre.
Eine DATEADD()
-Funktion zu haben ist nützlich, weil das Addieren und Subtrahieren von Datumsangaben nicht so einfach ist wie bei Zahlen. Wir müssen bedenken, dass die Monats- und Jahreswerte nach bestimmten Tagen erhöht werden müssen und die Tage nach einiger Zeit auch wieder von 1 gestartet werden müssen.
Allerdings stellt uns PostgreSQL keine ähnliche DATEADD()
-Funktion wie der SQL-Server zur Verfügung. Wie führen wir also wichtige Datumsberechnungen in PostgreSQL durch?
Dieser Artikel behandelt Alternativen zur DATEADD()
-Funktion in PostgreSQL.
Verwenden Sie die Operatoren +
und -
als Alternative zu DATEADD()
in PostgreSQL
Eine Möglichkeit, dies zu tun, besteht darin, die Operatoren +
und -
zu verwenden, wie wir es für die Ganzzahladdition und -subtraktion tun würden. Lassen Sie uns sehen, wie wir mit dem Operator +
eine bestimmte Anzahl von Tagen zu einem Datum hinzufügen können.
SELECT date '2022-08-24' + 10 as Expiration_Date;
Dies erzeugt die folgende Ausgabe:
Wir können sehen, dass dem angegebenen Datum wie erwartet 10 Tage hinzugefügt wurden. Eine andere Möglichkeit, diese Abfrage zu schreiben, ist wie folgt und erzeugt das gleiche Ergebnis:
SELECT date '2022-08-24' + integer ‘10’ as Expiration_Date;
Ausgang:
Lassen Sie uns als Nächstes sehen, wie wir mit den Operatoren +
und -
in der Zeit zurückgehen und eine bestimmte Anzahl von Tagen von einem Datum subtrahieren können. Die erste Möglichkeit besteht darin, einen +
-Operator zu verwenden und einen negativen ganzzahligen Wert anzugeben, wie unten gezeigt:
SELECT date '2022-09-03' + -10 as Manufacture_Date;
ODER
SELECT date '2022-09-03' + integer ‘-10’ as Manufacture_Date;
Die Ausgabe ist unten dargestellt:
Die zweite Möglichkeit besteht darin, den Operator -
zu verwenden und die Anzahl der Tage anzugeben, die wir subtrahieren möchten. Dies geschieht auf folgende Weise:
SELECT date '2022-09-03' - 10 as Manufacture_Date;
ODER
SELECT date '2022-09-03' - integer ‘10’ as Manufacture_Date;
Die Ausgabe ist unten dargestellt:
Diese Methode der Verwendung der Operatoren +
und -
ist nützlich, wenn Sie nur eine bestimmte Anzahl von Tagen hinzufügen müssen.
Was ist, wenn Sie 2 Monate zum Datum hinzufügen möchten? Sie können die 2 Monate jederzeit in mehrere Tage umwandeln und dann mit dem +
-Operator hinzufügen, aber das ist ein langwieriger Prozess.
Alternativ können wir den Datentyp INTERVAL
verwenden, um beliebige Datumsintervalle direkt hinzuzufügen. Diese Methode wird unten erklärt.
Verwenden Sie den Datentyp INTERVAL
als Alternative zu DATEADD()
in PostgreSQL
Der Datentyp INTERVAL
speichert Tage, Monate, Jahre, Wochen und die Zeit in Stunden, Minuten und Sekunden. Lassen Sie uns anhand einiger Beispielabfragen demonstrieren, wie sie verwendet werden.
Tage Intervall
Eine bestimmte Anzahl von Tagen kann wie folgt zu einem Datum hinzugefügt werden:
SELECT date '2022-08-24' + INTERVAL ‘10 day’ as Expiration_Date;
Dies ergibt die folgende Ausgabe:
Wir können sehen, dass die Ausgabe als Zeitstempel ohne Zeitzone angezeigt wird. Dies liegt daran, dass der Datentyp INTERVAL
auch Zeitwerte verarbeitet, sodass das in unserer Abfrage angegebene Datum so konvertiert wurde, dass es sowohl Datums- als auch Zeitwerte als Zeitstempel enthält.
Monate Intervall
Eine bestimmte Anzahl von Monaten kann wie folgt zu einem Datum hinzugefügt werden:
SELECT date '2022-08-24' + INTERVAL ‘2 month’ as Expiration_Date;
Dies ergibt die folgende Ausgabe:
Jahre Intervall
Eine bestimmte Anzahl von Jahren kann wie folgt zu einem Datum hinzugefügt werden:
SELECT date '2022-08-24' + INTERVAL ‘1 year’ as Expiration_Date;
Dies ergibt die folgende Ausgabe:
Wochen Intervall
Eine bestimmte Anzahl von Wochen kann auf folgende Weise zu einem Datum hinzugefügt werden:
SELECT date '2022-08-24' + INTERVAL ‘1 week’ as Expiration_Date;
Dies ergibt die folgende Ausgabe:
Mehrere Datumsintervalle
Wir können auch den Datentyp INTERVAL
verwenden, um mehrere Arten von Datumsintervallen gleichzeitig hinzuzufügen. Ein Beispiel ist unten gezeigt:
SELECT date '2022-08-24' + INTERVAL ‘1 week 2 day’ as Expiration_Date;
Dies ergibt die folgende Ausgabe:
Hinweis: Abgesehen davon können wir auch Zeitintervalle zu einem Datum hinzufügen, indem wir den Datentyp
INTERVAL
verwenden, indem wir die genauen hinzuzufügenden Stunden, Minuten oder Sekunden angeben.
Datumsintervalle in Variablen
Ein Beispiel am Anfang des Artikels diskutierte die Berechnung des Verfallsdatums aus einem gespeicherten Wert des Herstellungsdatums und der Anzahl der Tage bis zum Verfallsdatum. Sehen wir uns an, wie wir Datumsberechnungen mit in Variablen gespeicherten Werten durchführen können.
Die Syntax ist wie folgt:
SELECT manufacture_date + expires_in * INTERVAL '1 day' as Expiration_Date FROM product;
In dieser Abfrage haben wir den in der Variablen expires_in
gespeicherten Wert in ein INTERVAL
umgewandelt, das Tage darstellt. Dies ergibt die folgende Ausgabe:
In ähnlicher Weise können wir auch als ganze Zahlen gespeicherte Werte in Monate, Jahre und Wochen umwandeln und Datumsberechnungen mit ihnen durchführen.
Dies fasst unsere Diskussion über Alternativen zur Funktion DATEADD()
in PostgreSQL zusammen. Lerne weiter!
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub