PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Grundlegendes zu PostgreSQL-Datumstypen und -Funktionen (anhand von Beispielen)

In diesem Artikel befassen wir uns mit der Arbeit mit Datumsangaben in PostgreSQL, einschließlich der verschiedenen Datumsdatentypen und -formate, ihrer Funktionen und der Art und Weise, wie Sie im Alltag damit umgehen. Wir werden dbForge Studio für PostgreSQL verwenden, um die Beispiele zu veranschaulichen.

Sie können Daten und Zeitstempel für die Datenanalyse und Datenspeicherung verwenden, da Sie damit feststellen können, wann ein Ereignis tatsächlich aufgetreten ist. Das Schwierige an Datumsangaben ist, dass ihre Formate in verschiedenen Ländern unterschiedlich sind, was für Anfänger in der Datenbankverwaltung eine ziemlich herausfordernde Aufgabe sein kann. Der Datentyp und das Format der Datumsspalte sollten immer mit den vom Benutzer eingegebenen Informationen übereinstimmen. Außerdem sollten Sie das Datumsformat an die Vorlieben Ihrer Benutzer anpassen. Postgres kann eine Vielzahl von Datenformaten verarbeiten.

Inhalt

  • Überblick über den PostgreSQL-DATE-Datentyp
  • Das aktuelle Datum als Standardwert verwenden
  • Postgres DATE-Funktionen
  • Mit der NOW()-Funktion das aktuelle Datum abrufen
  • Mit der Funktion TO_CHAR() – geben Sie den Datumswert in einem bestimmten Format aus
  • Mit dem Minus-Operator das Intervall zwischen zwei Daten erhalten
  • Verwendung der AGE()-Funktion, um die Datumsdifferenz in Jahren, Monaten und Tagen zu erhalten
  • Verwendung der Funktion EXTRACT(), um Jahr, Quartal, Monat, Woche, Tag aus einem Datumswert zu erhalten
  • Verwendung von TO_TIMESTAMP(), um einen String in einen Zeitstempel umzuwandeln
  • Zusammenfassung

PostgreSQL DATE-Datentypübersicht

DATE Der Datentyp in PostgreSQL wird verwendet, um Datumsangaben im Format YYYY-MM-DD zu speichern (z. B. 2022-03-24). Es benötigt 4 Bytes, um einen Datumswert in einer Spalte zu speichern. Beachten Sie, dass das frühestmögliche Datum 4713 v. Chr. und das spätestmögliche Datum 5874897 n. Chr. ist.

Es ist äußerst wichtig, die Lesbarkeit des Codes in der Phase des Schreibens beizubehalten. dbForge Studio for PostgreSQL kann mit einem bequemen und intuitiven PostgreSQL-Formatierer aufwarten. Die in dbForge Studio für PostgreSQL integrierte Postgres SQL-Formatierungsfunktion kümmert sich um Codeformatierung, Syntaxprüfung und Codevervollständigung, sodass Sie sich auch auf den Umgang mit dem DATE-Datentyp konzentrieren können.

Das aktuelle Datum als Standardwert verwenden

Der Standardwert in einem DATE Spalte in einer Postgres-Datenbank kann mit dem Schlüsselwort DEFAULT CURRENT DATE gesetzt werden , wie im folgenden Skript:

CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
 
SELECT * FROM myevents;

Wie Sie sehen, ein Wert für [Ereignisdatum] wird vom PostgreSQL-Server automatisch eingefügt, wobei das aktuelle Systemdatum im Format JJJJ-MM-TT verwendet wird.

Postgres DATE-Funktionen

Manchmal ist es wichtig, das Datumsformat zu ändern oder die Werte in der PostgreSQL-Tabelle zu berechnen. Möglicherweise müssen wir dies für Benutzer aus verschiedenen Zeitzonen auf der ganzen Welt tun. In diesem Fall sind SQL-Funktionen entscheidend.

Mit der NOW()-Funktion das aktuelle Datum abrufen

SELECT now();

Sie können doppelte Doppelpunkte (::) verwenden, um ein DATETIME umzuwandeln Wert zu einem DATE Wert wie unten gezeigt:

Der aktuelle Systemzeitstempel wird von NOW() zurückgegeben Funktion. Die Syntax lautet wie folgt:

SELECT now()::date;

Mit der Funktion TO_CHAR() – geben Sie den Datumswert in einem bestimmten Format aus

Um die Ausgabe eines Postgres-Datumswerts in einem bestimmten Format darzustellen, muss TO_CHAR() Funktion ist praktisch. Die Syntax lautet wie folgt:

TO_CHAR(expression, format)

Es gibt zwei Parameter, die von TO_CHAR() akzeptiert werden Funktion:

  • Eingabedatum :Das Datum, das in ein bestimmtes Format konvertiert werden soll.
  • Datumsformat :Der Platzhalter für eine neue Datumsformatspezifikation.

Sehen wir uns an, wie die vorhandenen Datumswerte aus [MyEvents] konvertiert werden Tabelle im Format TT-MM-JJJJ.

SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;

Um den aktuellen Zeitstempel in das bevorzugte Format umzuwandeln, können Sie TO_CHAR() fusionieren und das NOW() Funktionen.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Mit dem Minus-Operator das Intervall zwischen zwei Daten erhalten

Um die Differenz zwischen zwei Daten zu berechnen, verwenden Sie den Minusoperator (-). Die folgende Abfrage liefert den Zeitraum zwischen dem aktuellen Zeitstempel und [eventdate] aus Meine Veranstaltungen Tisch.

SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;

Sie können auch ein Intervall für das Datum auswählen, das nach Ablauf einer bestimmten Zeit zurückgegeben werden soll. Sehen Sie sich die folgende Abfrage an:

SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;

Verwendung der AGE()-Funktion, um die Datumsdifferenz in Jahren, Monaten und Tagen zu erhalten

Mit dem AGE() Funktion können Sie den Datumsunterschied in Jahren, Monaten und Tagen erhalten. Mit dieser Funktion kann das Alter einer Person bestimmt werden. Mit dieser Funktion, die zwei Datumseingaben akzeptiert, wird der erste Datumswert vom zweiten Datumswert subtrahiert. Wenn die Werte im Funktionsskript umgekehrt werden, ist das Ergebnis ein negativer Wert.

Lassen Sie uns das Alter der Person herausfinden, deren Geburtsdatum 1995-10-09 ist. Die Syntax lautet wie folgt:

SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;

Verwendung der Funktion EXTRACT(), um Jahr, Quartal, Monat, Woche, Tag aus einem Datumswert zu erhalten

Der EXTRACT() Die Funktion gibt einen Tag, eine Woche, einen Monat, ein Jahr und ein Quartal vom angegebenen Datumswert zurück.

Jahr extrahieren:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;

Monat extrahieren:

SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;

Ein Viertel extrahieren:

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;

Wochentag extrahieren:

SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;

Tag des Jahres extrahieren:

SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;

Beachten Sie, dass dbForge Studio die Ergebnisse der Abfrageausführung jeweils auf einer separaten Registerkarte anzeigt.

Der EXTRACT() Funktion kann einfach mit INTERVAL kombiniert werden . Nehmen wir an, wir möchten das Intervall auf 5 Jahre 8 Monate 23 Tage 08 Stunden 10 Minuten und 20 Sekunden einstellen. Einzelne Werte werden durch den EXTRACT zurückgegeben Funktion.

SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );

Verwenden von TO_TIMESTAMP() zum Konvertieren eines Strings in einen Zeitstempel

Sie können Datumswerte in UTC (Universal Time Coordinator) beibehalten und die Zeitzone nach Bedarf ändern, wenn Sie den Zeitstempel in eine andere Zeitzone konvertieren möchten.

SELECT * FROM pg_timezone_names;

Um die aktuelle Zeitzone zu überprüfen, verwenden Sie SHOW TIMEZONE Befehl.

Sie können AT TIME ZONE verwenden um die Ausgabe für die gewählte Zeitzone zu erhalten, indem Sie den benötigten Zeitzonenwert aus den pg_timezone_names auswählen Tabelle.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';

AT TIME ZONE ermöglicht Ihnen verschiedene Zeitzonenausgaben.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';

Zusammenfassung

Zusammenfassend das PostgreSQL DATE Der Datentyp ist sehr wichtig und nützlich beim Speichern von Daten und Zeitstempeln in Tabellen, daher ist er in einer relationalen Datenbank ziemlich üblich. Das Spektrum ihrer Verwendung ist unglaublich breit, deshalb ist es so wichtig, sie für jeden Benutzer in jedem Land und jeder Zeitzone klar zu machen. Mit verschiedenen Postgres-Funktionen ist es einfach, die Bedürfnisse der Benutzer zu erfüllen, da Sie Daten ändern können, damit sie in einer bestimmten Zeitzone verwendet werden können, mit einem bestimmten Format und anderen Details, die die Arbeit mit solchen Daten erheblich erleichtern. Schließlich, wenn Sie nach einer perfekten Kombination aus einer intuitiven grafischen Oberfläche und einer erweiterten Befehlszeile suchen, die die Arbeit mit dem DATE erleichtern kann Datentyp noch angenehmer, dbForge Studio für PostgreSQL wird sich als nützlich erweisen.