PL/SQL - Datum und Uhrzeit: Ein Leitfaden für Anfänger

Hallo da draußen, zukünftige PL/SQL-Zauberer! Heute machen wir uns auf eine aufregende Reise durch die Welt der Daten und Zeiten in PL/SQL. Keine Sorge, wenn du noch nie eine Zeile Code geschrieben hast – ich werde dein freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Am Ende dieses Tutorials wirst du Daten und Zeiten wie ein Profi handhaben!

PL/SQL - Date & Time

Verständnis von Datum und Uhrzeit in PL/SQL

Bevor wir uns den Details widmen, lassen uns darüber sprechen, warum Daten und Zeiten in der Programmierung so wichtig sind. Stell dir vor, du baust eine Geburtstags-Erinnerungs-App oder ein Flugbuchungssystem. Du würdest ständig mit Daten arbeiten müssen! Das ist, wo PL/SQLs Datum- und Zeitfunktionen besonders nützlich werden.

Eine kurze Geschichte

Wusstest du, dass Oracle, das Unternehmen hinter PL/SQL, seit den 1970er Jahren mit Daten umgeht? Das ist älter als die meisten von euch, die diesen Text lesen! Über die Jahre haben sie ihre Behandlung von Datum und Uhrzeit zu einer unglaublich präzisen und flexiblen Angelegenheit verfeinert.

Felddaten für Datumzeit- und Intervall-Datentypen

Lassen wir mit den Grundlagen beginnen. In PL/SQL haben wir zwei Hauptkategorien, um mit der Zeit umzugehen: Datumzeit und Intervall.

Datumzeit-Datentypen

Datumzeittypen repräsentieren einen bestimmten Zeitpunkt. Denk daran als Schnappschuss. Die Hauptdatumzeittypen sind:

  1. DATE
  2. TIMESTAMP
  3. TIMESTAMP WITH TIME ZONE
  4. TIMESTAMP WITH LOCAL TIME ZONE

Intervall-Datentypen

Intervalltypen repräsentieren eine Zeitspanne. Denk daran als Messung des Abstands zwischen zwei Zeitpunkten. Die Hauptintervalltypen sind:

  1. INTERVAL YEAR TO MONTH
  2. INTERVAL DAY TO SECOND

Sehen wir uns eine Tabelle an, die diese Typen zusammenfasst:

Datentyp Beschreibung Beispiel
DATE Datum mit Jahrhundert, Jahr, Monat, Tag, Stunde, Minute und Sekunde 01-JAN-2023 12:00:00
TIMESTAMP Datum und Uhrzeit mit Bruchteilen von Sekunden 01-JAN-2023 12:00:00.000000
TIMESTAMP WITH TIME ZONE .Timestamp mit Zeitzone 01-JAN-2023 12:00:00.000000 -05:00
TIMESTAMP WITH LOCAL TIME ZONE Timestamp relativ zur Sitzungszeitzone 01-JAN-2023 12:00:00.000000
INTERVAL YEAR TO MONTH Zeitraum in Jahren und Monaten INTERVAL '1-3' YEAR TO MONTH
INTERVAL DAY TO SECOND Zeitraum in Tagen, Stunden, Minuten und Sekunden INTERVAL '2 12:30:00' DAY TO SECOND

Die Datumzeit-Datentypen und Funktionen

Nun, da wir wissen, was Datumzeittypen sind, lassen uns lernen, wie man sie verwendet!

Arbeiten mit DATE

Der DATE-Typ ist der am häufigsten verwendete. Er speichert Jahrhundert, Jahr, Monat, Tag, Stunde, Minute und Sekunde.

Sehen wir uns einige Beispiele an:

-- Aktuelles Datum abrufen
SELECT SYSDATE FROM DUAL;

-- 7 Tage zum aktuellen Datum hinzufügen
SELECT SYSDATE + 7 FROM DUAL;

-- Den Unterschied zwischen zwei Daten berechnen
SELECT TO_DATE('2023-12-31', 'YYYY-MM-DD') - SYSDATE AS days_until_new_year FROM DUAL;

Im ersten Beispiel verwenden wir SYSDATE, um das aktuelle Datum abzurufen. Es ist, als fragtest du deinen Computer: "Heute ist was für ein Tag?"

Das zweite Beispiel zeigt, wie einfach es ist, Datumarithmetik durchzuführen. Wir addieren 7 Tage zum heutigen Datum. Stell dir vor, du planst einen einwöchigen Urlaub – das wäre super nützlich!

Das dritte Beispiel berechnet, wie viele Tage bis zum Silvester bleiben. Wir verwenden TO_DATE, um eine Zeichenkette in ein Datum umzuwandeln, und subtrahieren dann das heutige Datum.

Arbeiten mit TIMESTAMP

TIMESTAMP ist wie der präzisere Cousin von DATE. Er enthält Bruchteile von Sekunden, was großartig ist, wenn du die Zeit bis zu Mikrosekunden verfolgen musst.

-- Aktuelle Zeitstempel abrufen
SELECT SYSTIMESTAMP FROM DUAL;

-- 3 Stunden zur aktuellen Zeitstempel hinzufügen
SELECT SYSTIMESTAMP + INTERVAL '3' HOUR FROM DUAL;

-- Nur den Datumsteil eines Zeitstempels extrahieren
SELECT TRUNC(SYSTIMESTAMP) FROM DUAL;

SYSTIMESTAMP gibt uns das aktuelle Datum und die Uhrzeit mit Mikrosekundenpräzision. Es ist, als hättest du eine supergenaue Uhr an deinem Handgelenk!

Das zweite Beispiel zeigt, wie wir Zeitintervalle zu einem Zeitstempel hinzufügen können. Dies könnte in einer Situation nützlich sein, in der du verfolgst, wie lange ein Vorgang dauert.

Das letzte Beispiel verwendet TRUNC, um die Zeitkomponente eines Zeitstempels zu entfernen, und gibt uns nur das Datum. Dies ist praktisch, wenn du nur den Tag, nicht die genaue Uhrzeit interessiert.

Die Intervall-Datentypen und Funktionen

Intervalle sind großartig, um Zeitspannen zu messen. Lassen wir sie in Aktion sehen!

INTERVAL YEAR TO MONTH

Dieser Intervalltyp ist perfekt, um längere Zeiträume zu messen, wie Alter oder Vertragsdauern.

-- Alter berechnen
SELECT
'John Doe' AS name,
TO_DATE('1990-05-15', 'YYYY-MM-DD') AS birthdate,
SYSDATE AS current_date,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' Jahre ' ||
EXTRACT(MONTH FROM SYSDATE) - EXTRACT(MONTH FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' Monate' AS age
FROM DUAL;

Dieses Beispiel berechnet das Alter einer Person in Jahren und Monaten. Wir verwenden EXTRACT, um die Jahr- und Monatsanteile der Daten zu ziehen, und führen dann einfache Arithmetik durch. Es ist wie Magie – aber es ist nur geschickter Einsatz von PL/SQL!

INTERVAL DAY TO SECOND

Dieser Intervalltyp ist großartig, um kürzere Zeiträume zu messen, wie die Zeit, die ein Task dauert.

-- Dauer eines Tasks berechnen
DECLARE
start_time TIMESTAMP;
end_time TIMESTAMP;
duration INTERVAL DAY TO SECOND;
BEGIN
start_time := SYSTIMESTAMP;

-- Simulierung eines Tasks, der einige Zeit dauert
DBMS_SESSION.SLEEP(5);

end_time := SYSTIMESTAMP;
duration := end_time - start_time;

DBMS_OUTPUT.PUT_LINE('Task-Dauer: ' || duration);
END;
/

In diesem Beispiel messen wir die Dauer eines Tasks. Wir protokollieren die Startzeit, führen eine Aufgabe aus (in diesem Fall warten wir 5 Sekunden mit DBMS_SESSION.SLEEP), dann protokollieren wir die Endzeit. Der Unterschied gibt uns die Dauer des Tasks.

Fazit

Glückwunsch! Du hast gerade deine ersten Schritte in die Welt der Daten und Zeiten in PL/SQL gemacht. Wir haben die grundlegenden Datentypen behandelt, gesehen, wie man mit Daten und Zeitstempeln arbeitet, und haben sogar einen kleinen Einblick in Intervalle bekommen.

Denke daran, Übung macht den Meister. Probiere diese Beispiele aus, ändere sie und sieh, was passiert. Vor dir wirst du wie ein erfahrener Programmierer mit Daten und Zeiten umgehen können!

Weiterschreiben, weiterlernen und vor allem: Spaß haben! Schließlich vergeht die Zeit wie im Flug, wenn man Spaß mit PL/SQL hat! ?

Credits: Image by storyset