Einführung
Die Möglichkeit, Datumswerte in Ihrer Datenbank zu speichern, ermöglicht es Ihnen, Ihren Abfragen und der Analyse Ihrer Daten ein Zeitelement hinzuzufügen. Es ist wichtig zu wissen, wie man mit Datumstypen in Ihrer jeweiligen Datenbank arbeitet, damit Sie bei Ihren Berichten genau sein können, egal ob es sich um Bestellinformationen, das Alter von Personen oder einen anderen Anwendungsfall handelt.
In dieser Anleitung besprechen wir das Speichern von DATE
-Typen in PostgreSQL und die verschiedenen Möglichkeiten, wie Sie damit arbeiten können.
PostgreSQL DATE
Datentyp
Das DATE
type in PostgreSQL kann ein Datum ohne zugeordneten Zeitwert speichern:
DATE
PostgreSQL verwendet 4 Bytes, um einen Datumswert zu speichern. Der Wertebereich für Datumswerte in PostgreSQL ist 4713 v. Chr. bis 5874897 n. Chr.
Beim Speichern eines Datumswerts verwendet PostgreSQL den yyyy-mm-dd
formatieren z.B. 1994-10-27. Dieses Format wird auch in PostgreSQL zum Einfügen von Daten verwendet.
In PostgreSQL ist es möglich, einen Standardwert für das aktuelle Datum festzulegen. Dies kann beim Erstellen Ihrer Tabelle mit DEFAULT
erfolgen und CURRENT_DATE
Schlüsselwörter. Der last_checkout
-Spalte aus unserer Bibliotheks-Checkouts-Tabelle akzeptiert standardmäßig das aktuelle Datum:
CREATE TABLE checkouts ( author_id serial PRIMARY KEY, author_name VARCHAR (255) NOT NULL, book_title VARCHAR (255) NOT NULL, published_date DATE NOT NULL, last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);
Dieser Tabellenstruktur folgend können wir Daten mit dem INSERT INTO
einfügen Aussage:
INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');
Dann beim Abfragen der checkouts
Tabelle erhalten wir Folgendes:
SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+--------------- 1 | James Joyce | Ulysses | 1922-02-02 | 2021-09-27(1 row)
PostgreSQL DATE
Funktionen
Indem Sie die Vor- und Nachteile des DATE
kennen Geben Sie PostgreSQL ein, dann können Sie Funktionen verwenden, die mit den von Ihnen gespeicherten Informationen arbeiten. Wir werden einige allgemeine Funktionen durchgehen, die auf der im vorherigen Abschnitt vorgestellten Tabelle aufbauen.
Erhalten Sie das aktuelle Datum
In PostgreSQL können Sie das aktuelle Datum und die Uhrzeit abrufen, indem Sie das integrierte NOW()
verwenden Funktion. Die folgende Anweisung gibt sowohl den Tag als auch die Uhrzeit zurück:
SELECT NOW(); now ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)
Wenn die Uhrzeit nicht von Interesse ist, können Sie auch angeben, dass nur das Datum mit doppelten Doppelpunkten ::
zurückgegeben werden soll um ein DATETIME
zu übertragen Wert zum DATE
Wert:
SELECT NOW()::date; now ------------ 2021-09-27(1 row)
Mit CURRENT_DATE
ist eine weitere Möglichkeit, das aktuelle Datum zu erhalten, wie unten gezeigt:
SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)
Alle drei dieser Optionen geben Ihnen das Datum im yyyy-mm-dd
zurück Format. Innerhalb von PostgreSQL können Sie das Format dieser Ausgabe bei Bedarf anpassen.
Gib einen Datumswert in einem bestimmten Format aus
Um einen Datumswert in einem bestimmten Format auszugeben, verwenden Sie den TO_CHAR()
Funktion. Diese Funktion akzeptiert zwei Parameter:
- der Wert, den Sie formatieren möchten
- die Vorlage, die das Ausgabeformat definiert
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy'); to_char ------------ 27/09/2021(1 row)
Sie können das Datum auch in einem Format wie Sep 27, 2021
anzeigen :
SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy'); to_char -------------- Sep 27, 2021(1 row)
Abhängig von den Anforderungen eines Systems benötigen Sie möglicherweise ein Datum, das auf eine bestimmte Weise formatiert ist. Dies ist ein Szenario, in dem es nützlich ist, die Ausgabe in PostgreSQL angeben zu können.
Abruf des Intervalls zwischen zwei Daten
PostgreSQL ermöglicht es Ihnen, das Intervall zwischen zwei Datumsangaben mit -
abzurufen Operator. Mit diesem Operator können Sie Dinge wie die Betriebszugehörigkeit eines Mitarbeiters oder die Zeit seit der Veröffentlichung eines Buches berechnen.
In unserem Beispiel wollen wir herausfinden, wie viele Tage seit Joyces Ulysses vergangen sind wurde veröffentlicht, indem das aktuelle Datum vom published_date
subtrahiert wurde :
SELECT author_name, book_title, now()::date - published_date as diffFROM checkouts;
Ergebnis:
author_name | book_title | diff -------------+------------+---------------------------- James Joyce | Ulysses | 36397 days (1 row)
Berechnung des Alters anhand von Datumswerten
Wir können mit demselben Beispiel fortfahren, um das Alter zum aktuellen Datum in Jahren, Monaten und Tagen mit AGE()
zu berechnen Funktion. Die folgende Anweisung verwendet das AGE()
Funktion zur Berechnung des Alters einer Publikation aus unserer Bibliothek checkouts
Tabellen:
SELECT author_name, book_title, AGE(published_date)FROM checkouts;
Mit dieser Funktion können wir berechnen, wie alt ein Buch im Bestand ist:
author_name | book_title | age -------------+------------+------------------------- James Joyce | Ulysses | 99 years 7 mons 25 days(1 row)
Es ist wichtig zu beachten, dass, wenn Sie ein einzelnes Datum in AGE()
übergeben Funktion, dann wird automatisch das aktuelle Datum zum Subtrahieren und Berechnen verwendet. Sie können auch zwei Daten an die Funktion übergeben, um das Alter zu berechnen, wie zum Beispiel:
SELECT author_name, book_title, AGE('2000-01-01',published_date),FROM checkouts;
Ergebnis:
author_name | book_title | age -------------+------------+-------------------------- James Joyce | Ulysses | 77 years 10 mons 27 days(1 row)
Extrahieren von Jahr, Quartal, Monat, Woche oder Tag aus einem Datumswert
Die letzte Funktion, die wir behandeln werden, ist EXTRACT()
Funktion in PostgreSQL, mit der Sie die Datumskomponenten wie Jahr, Quartal, Monat und Tag trennen können.
Die folgende Anweisung zieht das Jahr, den Monat und den Tag aus dem veröffentlichten Datum von Ulysses heraus :
SELECT author_name, book_title, EXTRACT(YEAR FROM published_date) AS YEAR, EXTRACT(MONTH FROM published_date) AS MONTH, EXTRACT(DAY FROM published_date) AS DAY FROM checkouts;
Die Ergebnisse sehen wie folgt aus:
author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce | Ulysses | 1922 | 2 | 2(1 row)
Dies ist eine nützliche Funktion, wenn Sie beispielsweise nur einen Teil eines Datumswerts für eine Berechnung mit Ihren Daten benötigen.
Fazit
In diesem Leitfaden haben wir die Grundlagen dessen behandelt, was Sie mit dem DATE
tun können Datentyp in PostgreSQL. Es ist wichtig zu wissen, wie Datumsdaten in Ihrer Datenbank funktionieren. Wenn Sie wissen, wie Sie darauf zugreifen und damit arbeiten können, können Sie Altersberechnungen durchführen, Extraktionen in Ihren Abfragen ausführen und bei Bedarf auch Ihre Ausgabe konfigurieren, um sie an die Anforderungen eines anderen Systems anzupassen.