So konvertieren Sie ein Datumszeichenfolgenformat in den Datentyp DATE in SQL

Beim Arbeiten mit Datenbanken in SQL ist es oft erforderlich, Datumszeichenfolgen mit unterschiedlichen Formaten in den Datentyp DATE umzuwandeln. Beispielsweise kann es vorkommen, dass Benutzereingaben oder Daten von externen Systemen in einem anderen als dem standardmäßigen Datumsformat vorliegen. Wenn diese nicht korrekt konvertiert werden, funktionieren die Abfragen möglicherweise nicht wie erwartet. In diesem Artikel wird detailliert beschrieben, wie Sie Datumszeichenfolgen mit bestimmten Formaten in SQL in den Datentyp DATE umwandeln können, unter Berücksichtigung der wichtigsten Datenbanken (MySQL, PostgreSQL, SQL Server, Oracle). Dadurch können Sie Datumsdaten konsistent verarbeiten und die Datenbankabfragen effizienter gestalten.

Inhaltsverzeichnis

Verständnis der Datumsformate in SQL

Beim Umgang mit Datumsangaben in SQL ist es wichtig, die Unterschiede zwischen den verschiedenen Datumsformaten zu verstehen. Diese Formate variieren je nach Datenbank, wobei das Format YYYY-MM-DD (Jahr-Monat-Tag) am häufigsten verwendet wird. Bei Benutzereingaben oder externen Datenquellen können jedoch abweichende Formate auftreten. Daher ist es notwendig, das genaue Datumsformat zu kennen und entsprechend anzuwenden.

Standardformat für Datumsangaben

Die meisten Datenbanksysteme verwenden das Format YYYY-MM-DD als Standard für Datumsangaben. Dieses Format ist international standardisiert und wird empfohlen, um Daten konsistent zu behandeln.

Beispiele für unterschiedliche Datumsformate

Daten, die aus Benutzereingaben oder anderen Systemen stammen, können in den folgenden abweichenden Datumsformaten vorliegen:

  • MM/DD/YYYY
  • DD-MM-YYYY
  • YYYY/MM/DD
  • DD Mon YYYY

Warum die Umwandlung von Datumsformaten notwendig ist

Wenn Datumsformate nicht einheitlich sind, können Datumsvergleiche und -berechnungen ungenau sein. Außerdem liefern Abfragen möglicherweise nicht die erwarteten Ergebnisse. Daher ist es wichtig, Datumsformate richtig zu konvertieren.

Im Folgenden wird die grundlegende Syntax zur Umwandlung von Datumszeichenfolgen in den Datentyp DATE in SQL beschrieben.

Grundlegende Syntax zur Umwandlung von Datumsformaten

Um eine Datumszeichenfolge in SQL in den Datentyp DATE zu konvertieren, werden bestimmte Funktionen oder Syntaxelemente verwendet, die für jedes Datenbanksystem spezifisch sind. Nachfolgend finden Sie die grundlegende Syntax für die gängigsten Datenbanksysteme.

Die Funktion DATE_FORMAT in MySQL

In MySQL wird die Funktion STR_TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Diese Funktion wandelt eine Zeichenfolge basierend auf dem angegebenen Format um.

SELECT STR_TO_DATE('31-12-2023', '%d-%m-%Y');

In diesem Beispiel wird die Datumszeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt.

Die Funktion TO_DATE in PostgreSQL

In PostgreSQL wird die Funktion TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren.

SELECT TO_DATE('31-12-2023', 'DD-MM-YYYY');

In diesem Beispiel wird die Zeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt.

Die Funktion CONVERT in SQL Server

In SQL Server wird die Funktion CONVERT verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Mit dieser Funktion wird das Format durch einen Stilcode festgelegt.

SELECT CONVERT(DATE, '12/31/2023', 101);

In diesem Beispiel wird die Zeichenfolge 12/31/2023 in den Datentyp DATE umgewandelt.

Die Funktion TO_DATE in Oracle

In Oracle wird die Funktion TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren.

SELECT TO_DATE('31-Dec-2023', 'DD-Mon-YYYY') FROM dual;

In diesem Beispiel wird die Zeichenfolge 31-Dec-2023 in den Datentyp DATE umgewandelt.

Durch das Verständnis der grundlegenden Methoden zur Umwandlung von Datumsformaten in den verschiedenen Datenbanksystemen können Sie Datumsdaten präzise verarbeiten. Im Folgenden werden die spezifischen Methoden zur Umwandlung von Datumszeichenfolgen für jedes Datenbanksystem erläutert.

Wie Sie eine Datumszeichenfolge in MySQL konvertieren

In MySQL wird die Funktion STR_TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Diese Funktion analysiert die Zeichenfolge basierend auf dem angegebenen Format und wandelt sie in den Datentyp DATE um.

Grundlegende Verwendung der Funktion STR_TO_DATE

Die Funktion STR_TO_DATE wird wie folgt verwendet:

SELECT STR_TO_DATE('31-12-2023', '%d-%m-%Y');

In diesem Beispiel wird die Datumszeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt. Die Formatzeichen geben dabei an, welcher Teil der Zeichenfolge was darstellt:

  • %d: Tag
  • %m: Monat
  • %Y: Jahr

Wie Sie mehrere Formate unterstützen

Wenn Sie Datumszeichenfolgen mit unterschiedlichen Formaten behandeln müssen, verwenden Sie entsprechende Formatzeichen für jede Variante.

SELECT STR_TO_DATE('2023/12/31', '%Y/%m/%d');
SELECT STR_TO_DATE('12-31-2023', '%m-%d-%Y');

In diesen Beispielen werden Zeichenfolgen mit unterschiedlichen Formaten in den Datentyp DATE umgewandelt.

Beispiele aus der Praxis

In der Praxis kann die Funktion z.B. verwendet werden, um in einer Tabelle gespeicherte Datumszeichenfolgen umzuwandeln.

SELECT STR_TO_DATE(order_date, '%d-%m-%Y') AS formatted_date
FROM orders;

In diesem Beispiel wird die in der Spalte order_date der Tabelle orders gespeicherte Datumszeichenfolge in den Datentyp DATE umgewandelt und als formatted_date angezeigt.

Die Umwandlung von Datumsformaten in MySQL kann einfach mit der Funktion STR_TO_DATE durchgeführt werden. Im nächsten Abschnitt wird beschrieben, wie Sie Datumszeichenfolgen in PostgreSQL umwandeln können.

Wie Sie eine Datumszeichenfolge in PostgreSQL konvertieren

In PostgreSQL wird die Funktion TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Diese Funktion analysiert die Zeichenfolge basierend auf dem angegebenen Format und wandelt sie in den Datentyp DATE um.

Grundlegende Verwendung der Funktion TO_DATE

Die Funktion TO_DATE wird wie folgt verwendet:

SELECT TO_DATE('31-12-2023', 'DD-MM-YYYY');

In diesem Beispiel wird die Datumszeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt. Die Formatzeichen geben dabei an, welcher Teil der Zeichenfolge was darstellt:

  • DD: Tag
  • MM: Monat
  • YYYY: Jahr

Wie Sie mehrere Formate unterstützen

Wenn Sie Datumszeichenfolgen mit unterschiedlichen Formaten behandeln müssen, verwenden Sie entsprechende Formatzeichen für jede Variante.

SELECT TO_DATE('2023/12/31', 'YYYY/MM/DD');
SELECT TO_DATE('12-31-2023', 'MM-DD-YYYY');

In diesen Beispielen werden Zeichenfolgen mit unterschiedlichen Formaten in den Datentyp DATE umgewandelt.

Beispiele aus der Praxis

In der Praxis kann die Funktion z.B. verwendet werden, um in einer Tabelle gespeicherte Datumszeichenfolgen umzuwandeln.

SELECT TO_DATE(order_date, 'DD-MM-YYYY') AS formatted_date
FROM orders;

In diesem Beispiel wird die in der Spalte order_date der Tabelle orders gespeicherte Datumszeichenfolge in den Datentyp DATE umgewandelt und als formatted_date angezeigt.

Komplexere Umwandlungen

Datumszeichenfolgen, die spezielle Zeichen oder komplexere Formate enthalten, können ebenfalls mit den entsprechenden Formatzeichen umgewandelt werden.

SELECT TO_DATE('31-Dec-2023', 'DD-Mon-YYYY');

In diesem Beispiel wird die Zeichenfolge 31-Dec-2023 in den Datentyp DATE umgewandelt.

Die Umwandlung von Datumsformaten in PostgreSQL kann einfach mit der Funktion TO_DATE durchgeführt werden. Im nächsten Abschnitt wird beschrieben, wie Sie Datumszeichenfolgen in SQL Server umwandeln können.

Wie Sie eine Datumszeichenfolge in SQL Server konvertieren

In SQL Server wird die Funktion CONVERT oder TRY_CONVERT verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Diese Funktionen analysieren die Zeichenfolge basierend auf dem angegebenen Stilcode und wandeln sie in den Datentyp DATE um.

Grundlegende Verwendung der Funktion CONVERT

Die Funktion CONVERT wird wie folgt verwendet:

SELECT CONVERT(DATE, '12/31/2023', 101);

In diesem Beispiel wird die Datumszeichenfolge 12/31/2023 in den Datentyp DATE umgewandelt. Der Stilcode 101 steht für das Datumsformat MM/DD/YYYY.

Verwendung der Funktion TRY_CONVERT

Die Funktion TRY_CONVERT gibt im Falle einer fehlgeschlagenen Umwandlung NULL zurück, sodass eine sichere Umwandlung versucht werden kann.

SELECT TRY_CONVERT(DATE, '31-12-2023', 105);

In diesem Beispiel wird die Datumszeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt. Der Stilcode 105 steht für das Format DD-MM-YYYY.

Wie Sie mehrere Formate unterstützen

Wenn Sie Datumszeichenfolgen mit unterschiedlichen Formaten behandeln müssen, verwenden Sie entsprechende Stilcodes für jede Variante.

SELECT CONVERT(DATE, '2023/12/31', 111);  -- YYYY/MM/DD
SELECT CONVERT(DATE, '12-31-2023', 110);  -- MM-DD-YYYY

In diesen Beispielen werden Zeichenfolgen mit unterschiedlichen Formaten in den Datentyp DATE umgewandelt.

Beispiele aus der Praxis

In der Praxis kann die Funktion z.B. verwendet werden, um in einer Tabelle gespeicherte Datumszeichenfolgen umzuwandeln.

SELECT CONVERT(DATE, order_date, 101) AS formatted_date
FROM orders;

In diesem Beispiel wird die in der Spalte order_date der Tabelle orders gespeicherte Datumszeichenfolge in den Datentyp DATE umgewandelt und als formatted_date angezeigt.

Liste der Datumsformat-Stilcodes

Nachfolgend sind einige gängige Stilcodes aufgeführt, die in SQL Server für Datumsformate verwendet werden:

  • 101: MM/DD/YYYY
  • 102: YYYY.MM.DD
  • 103: DD/MM/YYYY
  • 104: DD.MM.YYYY
  • 105: DD-MM-YYYY

Die Umwandlung von Datumsformaten in SQL Server kann einfach mit den Funktionen CONVERT und TRY_CONVERT durchgeführt werden. Im nächsten Abschnitt wird beschrieben, wie Sie Datumszeichenfolgen in Oracle umwandeln können.

Wie Sie eine Datumszeichenfolge in Oracle konvertieren

In Oracle-Datenbanken wird die Funktion TO_DATE verwendet, um eine Datumszeichenfolge in den Datentyp DATE zu konvertieren. Diese Funktion analysiert die Zeichenfolge basierend auf dem angegebenen Format und wandelt sie in den Datentyp DATE um.

Grundlegende Verwendung der Funktion TO_DATE

Die Funktion TO_DATE wird wie folgt verwendet:

SELECT TO_DATE('31-12-2023', 'DD-MM-YYYY') FROM dual;

In diesem Beispiel wird die Datumszeichenfolge 31-12-2023 in den Datentyp DATE umgewandelt. Die Formatzeichen geben dabei an, welcher Teil der Zeichenfolge was darstellt:

  • DD: Tag
  • MM: Monat
  • YYYY: Jahr

Wie Sie mehrere Formate unterstützen

Wenn Sie Datumszeichenfolgen mit unterschiedlichen Formaten behandeln müssen, verwenden Sie entsprechende Formatzeichen für jede Variante.

SELECT TO_DATE('2023/12/31', 'YYYY/MM/DD') FROM dual;
SELECT TO_DATE('12-31-2023', 'MM-DD-YYYY') FROM dual;

In diesen Beispielen werden Zeichenfolgen mit unterschiedlichen Formaten in den Datentyp DATE umgewandelt.

Beispiele aus der Praxis

In der Praxis kann die Funktion z.B. verwendet werden, um in einer Tabelle gespeicherte Datumszeichenfolgen umzuwandeln.

SELECT TO_DATE(order_date, 'DD-MM-YYYY') AS formatted_date
FROM orders;

In diesem Beispiel wird die in der Spalte order_date der Tabelle orders gespeicherte Datumszeichenfolge in den Datentyp DATE umgewandelt und als formatted_date angezeigt.

Komplexere Umwandlungen

Datumszeichenfolgen, die spezielle Zeichen oder komplexere Formate enthalten, können ebenfalls mit den entsprechenden Formatzeichen umgewandelt werden.

SELECT TO_DATE('31-Dec-2023', 'DD-Mon-YYYY') FROM dual;

In diesem Beispiel wird die Zeichenfolge 31-Dec-2023 in den Datentyp DATE umgewandelt. Mon steht für die abgekürzte Monatsform.

Liste der Formatzeichen

Nachfolgend sind einige gängige Formatzeichen aufgeführt, die in Oracle für Datumsformate verwendet werden:

  • YYYY: Vierstellige Jahreszahl
  • MM: Zweistellige Monatszahl
  • DD: Zweistellige Tageszahl
  • Mon: Abgekürzter Monatsname (z.B. Jan, Feb, Mär)
  • HH24: 24-Stunden-Format der Uhrzeit
  • MI: Minuten
  • SS: Sekunden

Die Umwandlung von Datumsformaten in Oracle kann einfach mit der Funktion TO_DATE durchgeführt werden. Im nächsten Abschnitt werden häufig auftretende Fehler bei der Umwandlung von Datumsformaten und ihre Debugging-Methoden beschrieben.

Fehlerbehandlung und Debugging-Tipps

Bei der Umwandlung von Datumszeichenfolgen in den Datentyp DATE können verschiedene Fehler auftreten, z.B. Formatinkonsistenzen oder ungültige Datumszeichenfolgen. In diesem Abschnitt werden einige Tipps zur Erkennung und Behandlung solcher Fehler vorgestellt.

Häufige Fehlerarten

Zu den häufigen Fehlern bei der Umwandlung von Datumsformaten gehören:

  • Formatinkonsistenz: Dieser Fehler tritt auf, wenn das angegebene Format nicht mit der Datumszeichenfolge übereinstimmt.
  • Ungültiges Datum: Dieser Fehler tritt auf, wenn versucht wird, ein ungültiges Datum (z.B. 2023-02-30) zu konvertieren.
  • NULL-Werte: Dieser Fehler tritt auf, wenn eine NULL-Wert-Datumszeichenfolge konvertiert werden soll.

Erkennung und Behandlung von Fehlern

Nachfolgend werden Methoden zur Erkennung und Behandlung von Fehlern vorgestellt.

MySQL

In MySQL wird NULL zurückgegeben, wenn eine ungültige Datumszeichenfolge konvertiert wird. Um Standardwerte festzulegen, können Sie die Funktionen IFNULL oder COALESCE verwenden.

SELECT IFNULL(STR_TO_DATE(order_date, '%d-%m-%Y'), '1970-01-01') AS formatted_date
FROM orders;

In diesem Beispiel wird im Falle eines fehlgeschlagenen Konvertierungsversuchs der Standardwert 1970-01-01 zurückgegeben.

PostgreSQL

In PostgreSQL führt die Funktion TO_DATE zu einer Ausnahme, wenn eine ungültige Datumszeichenfolge eingegeben wird. Sie können das TRY...EXCEPT-Konstrukt verwenden, um Fehler abzufangen.

DO $$
BEGIN
  SELECT TO_DATE('invalid-date', 'DD-MM-YYYY');
EXCEPTION
  WHEN others THEN
    RAISE NOTICE 'Invalid date format';
END $$;

In diesem Beispiel wird im Falle eines Fehlers eine Nachricht ausgegeben.

SQL Server

In SQL Server wird die Funktion TRY_CONVERT verwendet, um NULL im Falle eines fehlgeschlagenen Konvertierungsversuchs zurückzugeben.

SELECT TRY_CONVERT(DATE, 'invalid-date', 105) AS formatted_date;

In diesem Beispiel wird eine ungültige Datumszeichenfolge als NULL zurückgegeben.

Oracle

In Oracle können Sie Fehler mit einem EXCEPTION-Block behandeln.

BEGIN
  SELECT TO_DATE('invalid-date', 'DD-MM-YYYY') FROM dual;
EXCEPTION
  WHEN others THEN
    DBMS_OUTPUT.PUT_LINE('Invalid date format');
END;

In diesem Beispiel wird im Falle eines Fehlers eine Nachricht ausgegeben.

Debugging-Tipps

Nachfolgend einige Tipps zur Fehlersuche bei Datumsformatfehlern:

  • Überprüfen Sie die Richtigkeit der Formatzeichen.
  • Vergewissern Sie sich, dass die eingegebene Datumszeichenfolge gültig ist.
  • Überprüfen Sie, welche Datumsformate von der verwendeten Konvertierungsfunktion unterstützt werden.

Durch die Verwendung der korrekten Formatzeichen und gültiger Datumszeichenfolgen können Sie die Häufigkeit von Umwandlungsfehlern reduzieren. Im nächsten Abschnitt werden Anwendungsbeispiele und Übungsaufgaben zur Umwandlung von Datumszeichenfolgen in den Datentyp DATE vorgestellt.

Anwendungsbeispiele und Übungsaufgaben zur Umwandlung von Datumszeichenfolgen in den Datentyp DATE

Anwendungsbeispiel: Umwandlung von Datumszeichenfolgen mit verschiedenen Formaten

Angenommen, Sie haben eine Tabelle, die Datumszeichenfolgen in mehreren unterschiedlichen Formaten enthält. Im Folgenden wird gezeigt, wie Sie diese Zeichenfolgen in den Datentyp DATE konvertieren können.

Beispieldaten

Angenommen, Sie haben die folgende Tabelle events.

CREATE TABLE events (
    event_id INT,
    event_date VARCHAR(20)
);

INSERT INTO events (event_id, event_date) VALUES
(1, '2023-12-31'),
(2, '31/12/2023'),
(3, 'December 31, 2023');

Beispiel für eine Umwandlungsabfrage

Die folgende Abfrage zeigt, wie Sie die verschiedenen Formate verarbeiten und in den Datentyp DATE konvertieren können.

SELECT event_id,
    CASE
        WHEN event_date LIKE '____-__-__' THEN STR_TO_DATE(event_date, '%Y-%m-%d')
        WHEN event_date LIKE '__/__/____' THEN STR_TO_DATE(event_date, '%d/%m/%Y')
        WHEN event_date LIKE '%____%' THEN STR_TO_DATE(event_date, '%M %d, %Y')
        ELSE NULL
    END AS formatted_date
FROM events;

In dieser Abfrage wird eine CASE-Anweisung verwendet, um die verschiedenen Formate zu verarbeiten und die Datumszeichenfolgen in den Datentyp DATE umzuwandeln.

Übungsaufgaben

Üben Sie die Umwandlung von Datumszeichenfolgen mit den folgenden Aufgaben.

Übungsaufgabe 1

Schreiben Sie eine Abfrage, die die folgende Datumszeichenfolge in den Datentyp DATE umwandelt:

  • Datumszeichenfolge: 15-08-2023
  • Format: DD-MM-YYYY

Übungsaufgabe 2

Schreiben Sie eine Abfrage, die die in der Spalte sale_date der Tabelle sales gespeicherten Datumszeichenfolgen in den Datentyp DATE umwandelt und als neue Spalte formatted_sale_date anzeigt.

CREATE TABLE sales (
    sale_id INT,
    sale_date VARCHAR(20)
);

INSERT INTO sales (sale_id, sale_date) VALUES
(1, '08/15/2023'),
(2, '15-08-2023'),
(3, '2023.08.15');
  • Die Formate der Datumszeichenfolgen sind wie folgt:
  • 08/15/2023 : MM/DD/YYYY
  • 15-08-2023 : DD-MM-YYYY
  • 2023.08.15 : YYYY.MM.DD

Übungsaufgabe 3

Schreiben Sie eine Abfrage, die die in der Spalte birthday der Tabelle birthdays gespeicherten Datumszeichenfolgen in den Datentyp DATE umwandelt. Wenn eine ungültige Datumszeichenfolge enthalten ist, soll NULL zurückgegeben werden.

CREATE TABLE birthdays (
    user_id INT,
    birthday VARCHAR(20)
);

INSERT INTO birthdays (user_id, birthday) VALUES
(1, '1990-02-30'),
(2, '29-02-2020'),
(3, '15/08/1995');
  • Die Formate der Datumszeichenfolgen sind wie folgt:
  • 1990-02-30 : YYYY-MM-DD
  • 29-02-2020 : DD-MM-YYYY
  • 15/08/1995 : DD/MM/YYYY

Durch das Lösen dieser Aufgaben können Sie Ihre Kenntnisse in der Umwandlung von Datumszeichenfolgen vertiefen. Im nächsten Abschnitt folgt die Zusammenfassung des gesamten Artikels.

Zusammenfassung

In diesem Artikel wurde beschrieben, wie Sie Datumszeichenfolgen mit bestimmten Formaten in SQL in den Datentyp DATE umwandeln können. Wir haben die spezifischen Methoden für die wichtigsten Datenbanksysteme (MySQL, PostgreSQL, SQL Server, Oracle) erläutert und Hinweise zur Fehlerbehandlung und zum Debugging gegeben. Abschließend konnten Sie Ihr Wissen durch Anwendungsbeispiele und Übungsaufgaben weiter vertiefen.

Die Umwandlung von Datumsformaten ist ein wesentlicher Bestandteil bei der Arbeit mit Datenbanken. Eine korrekte Umwandlung stellt sicher, dass die Daten konsistent bleiben und die Abfragen zuverlässig funktionieren. Beachten Sie stets die folgenden Punkte:

  • Verwenden Sie die richtigen Formatzeichen.
  • Überprüfen Sie die Richtigkeit der eingegebenen Datumszeichenfolgen.
  • Behandeln Sie ungültige Datumsangaben und Formatinkonsistenzen angemessen.
  • Verstehen Sie die Funktionen und Syntax, die für jedes Datenbanksystem spezifisch sind, und wenden Sie sie an.

Nutzen Sie diese Kenntnisse und Fähigkeiten, um Datumsdaten in SQL korrekt und effizient zu verarbeiten und Ihre Datenbankverwaltung und -abfragen zu optimieren.

Inhaltsverzeichnis