Alternativen zu DATEADD() in PostgreSQL

Bilal Shahid 15 Februar 2024
  1. die DATEADD()-Funktion in SQL
  2. Verwenden Sie die Operatoren + und - als Alternative zu DATEADD() in PostgreSQL
  3. Verwenden Sie den Datentyp INTERVAL als Alternative zu DATEADD() in PostgreSQL
Alternativen zu DATEADD() 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:

PostgreSQL DATEADD - Ausgabe 1

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:

PostgreSQL DATEADD - Ausgabe 2

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:

PostgreSQL DATEADD - Ausgabe 3

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:

PostgreSQL DATEADD - Ausgabe 4

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:

PostgreSQL DATEADD - Ausgabe 5

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:

PostgreSQL DATEADD - Ausgabe 6

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:

PostgreSQL DATEADD - Ausgabe 7

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:

PostgreSQL DATEADD - Ausgabe 8

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:

PostgreSQL DATEADD - Ausgabe 9

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:

PostgreSQL DATEADD - Ausgabe 10

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:

PostgreSQL DATEADD - Ausgabe 11

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:

PostgreSQL DATEADD - Ausgabe 12

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!

Bilal Shahid avatar Bilal Shahid avatar

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

Verwandter Artikel - PostgreSQL Date