Um in SQL ein Datum einzufügen, schreibst du es in deinem INSERT-Statement als 'YYYY-MM-DD'-String oder nutzt für das heutige Datum eine Funktion wie CURRENT_DATE. Die Beispiele funktionieren in PostgreSQL, MySQL, SQLite und SQL Server.
So fügst du in SQL ein Datum ein
Schreib das Datum als String im Format 'YYYY-MM-DD'. Hat die Spalte einen Datumstyp, wandelt die Datenbank den String in ein Datum um:
INSERT INTO table_name (date_column) VALUES ('YYYY-MM-DD');
INSERT INTO orders (order_id, customer, order_date)
VALUES (2, 'Tom', '2021-06-15');
Bei einer TIMESTAMP- oder DATETIME-Spalte hängst du die Uhrzeit nach einem Leerzeichen im 24-Stunden-Format an:
INSERT INTO flights (flight_no, departs_at)
VALUES ('UA 940', '2026-11-02 17:45:00');
-- In SQL Server, make departs_at a DATETIME2: its TIMESTAMP type isn't a date
Für das heutige Datum setzt du CURRENT_DATE ohne Anführungszeichen an die Stelle des Strings. CURRENT_TIMESTAMP liefert Datum und Uhrzeit:
INSERT INTO orders (order_id, customer, order_date)
VALUES (3, 'Priya', CURRENT_DATE);
-- In SQL Server, use CAST(GETDATE() AS DATE): it has no CURRENT_DATE
-- Output (the new row, run on 2026-10-13):
-- order_id | customer | order_date
-- ---------+----------+-----------
-- 3 | Priya | 2026-10-13
Wichtige Regeln
-
Bleib bei
'YYYY-MM-DD'. Andere Formate hängen von den Einstellungen der Datenbank ab. PostgreSQL und SQL Server lesen'06/15/2021'als Monat/Tag/Jahr, MySQL lehnt es ab:
INSERT INTO orders (order_id, customer, order_date) VALUES (4, 'Ana', '06/15/2021');
-- MySQL: ERROR 1292 (22007): Incorrect date value: '06/15/2021' for column 'order_date' at row 1
-
SQLite prüft keine Datumswerte. Es hat keinen Datumstyp und speichert jeden Text, den du ihm gibst. Seine Datumsfunktionen können
'06/15/2021'nicht lesen und machen aus'2021-02-30'einfach2021-03-02. -
MySQLs
TIMESTAMPdeckt nur 1970 bis 2038 ab. NimmDATETIMEfür Geburtstage, historische Daten und alles, was weit in der Zukunft liegt:
-- MySQL
CREATE TABLE people (name VARCHAR(50), born_at TIMESTAMP);
INSERT INTO people (name, born_at) VALUES ('Ada Lovelace', '1815-12-10 00:00:00');
-- ERROR 1292 (22007): Incorrect datetime value: '1815-12-10 00:00:00' for column 'born_at' at row 1
- „Jetzt“ gilt in der Zeitzone der Datenbank (in SQLite immer UTC). Sind deine Nutzer in mehreren Zeitzonen unterwegs, speichere UTC.
Alternative Syntax
Du wirst auch auf die eigenen Namen der jeweiligen Datenbank für heute und jetzt stoßen:
- MySQL:
CURDATE()undNOW(). PostgreSQL kenntNOW()ebenfalls. - SQLite:
date('now')unddatetime('now'). - SQL Server:
CAST(GETDATE() AS DATE)undGETDATE(). Es gibt keinCURRENT_DATE, daher braucht das heutige Datum den Cast.
Wann musst du ein Datum einfügen?
Die meisten Datums-Inserts gehören zu einer dieser fünf Aufgaben, und jede hat ihr eigenes Werkzeug.
Ein bekanntes Datum speichern
Geburtstage, Fälligkeitsdaten und Termine kommen von einer Person oder aus einem Formular. Gib sie als 'YYYY-MM-DD'-Strings ein.
Heutiges Datum oder aktuelle Uhrzeit setzen
Bestelldaten, Registrierungsdaten und Audit-Logs sollten von der Uhr der Datenbank kommen, nicht aus einem eingetippten Wert. Nutze CURRENT_DATE oder CURRENT_TIMESTAMP (GETDATE() in SQL Server) oder mach eines davon zum Standardwert der Spalte.
Uhrzeit zusätzlich zum Datum speichern
Meetings, Flüge und Log-Einträge brauchen auch die Uhrzeit. Verwende eine DATETIME- oder TIMESTAMP-Spalte und schreib 'YYYY-MM-DD HH:MM:SS'.
Ein Datum aus einem anderen berechnen
Fälligkeiten, Verlängerungen und Erinnerungen liegen eine feste Zeit nach einem anderen Datum. Lass die Datenbank rechnen: + INTERVAL in PostgreSQL und MySQL, DATEADD() in SQL Server und date() mit Modifier in SQLite.
Datumswerte in anderem Format laden
Tabellenkalkulationen und CSV-Exporte enthalten oft Datumsangaben wie 06/15/2021. Wandle sie beim Einfügen um: STR_TO_DATE() in MySQL, TO_DATE() in PostgreSQL und CONVERT() mit Style-Nummer in SQL Server. SQLite kann andere Formate nicht parsen, also stellst du den Text mit substr() um.
Praxisbeispiele zum Einfügen von Datumswerten
Mehrere Datumswerte in einem Statement einfügen
Eine Liste von Feiertagen kommt mit einem einzigen INSERT und einer Werte-Zeile pro Datum in die Tabelle:
INSERT INTO holidays (holiday_name, holiday_date)
VALUES
('Independence Day', '2026-07-04'),
('Thanksgiving', '2026-11-26'),
('Christmas Day', '2026-12-25');
Heutiges Datum per Standardwert eintragen
Gib der Spalte einen Standardwert, und jedes INSERT, das sie weglässt, bekommt das heutige Datum. MySQL braucht die Klammern um CURRENT_DATE:
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE DEFAULT (CURRENT_DATE) -- SQL Server: DEFAULT CAST(GETDATE() AS DATE)
);
INSERT INTO orders (order_id, customer_id) VALUES (1, 42);
-- Output (the new row, run on 2026-10-13):
-- order_id | customer_id | order_date
-- ---------+-------------+-----------
-- 1 | 42 | 2026-10-13
Lokale Meeting-Zeit als UTC speichern
Jemand in New York bucht ein Meeting für 9:30 Uhr Ortszeit. Wandle die Zeit beim Einfügen in UTC um, damit alle Zeiten zusammenpassen:
INSERT INTO meetings (title, starts_at_utc)
VALUES ('Design review', TIMESTAMP '2026-10-20 09:30:00' AT TIME ZONE 'America/New_York' AT TIME ZONE 'UTC');
-- MySQL (once its time zone tables are loaded):
-- CONVERT_TZ('2026-10-20 09:30:00', 'America/New_York', 'UTC')
-- SQL Server:
-- CAST('2026-10-20 09:30:00' AS DATETIME2) AT TIME ZONE 'Eastern Standard Time' AT TIME ZONE 'UTC'
-- Output (the new row):
-- title | starts_at_utc
-- --------------+--------------------
-- Design review | 2026-10-20 13:30:00
SQLite kennt keine benannten Zeitzonen, also rechne vor dem Einfügen in deiner Anwendung um.
Verlängerungsdatum einen Monat später setzen
Ein Abo verlängert sich einen Monat nach dem Start. Berechne das Verlängerungsdatum direkt im INSERT:
INSERT INTO subscriptions (customer, started_on, renews_on)
VALUES ('Tom', '2026-10-13', DATE '2026-10-13' + INTERVAL '1' MONTH);
-- SQL Server: DATEADD(month, 1, '2026-10-13')
-- SQLite: date('2026-10-13', '+1 month')
-- Output (the new row):
-- customer | started_on | renews_on
-- ---------+------------+-----------
-- Tom | 2026-10-13 | 2026-11-13
Achte in SQLite auf das Monatsende. Vom 31. Januar aus rutscht es in den März, während die anderen Datenbanken beim 28. Februar stoppen:
SELECT date('2026-01-31', '+1 month');
-- Output: 2026-03-03
Datumswerte im Format Tag/Monat/Jahr importieren
Ein Lieferant schickt Rechnungen im britischen Format, 15/06/2021. Teil der Datenbank beim Einfügen das Format mit:
INSERT INTO invoices (invoice_no, issued_on)
VALUES ('INV-1002', TO_DATE('15/06/2021', 'DD/MM/YYYY'));
-- MySQL: STR_TO_DATE('15/06/2021', '%d/%m/%Y')
-- SQL Server: CONVERT(date, '15/06/2021', 103), where style 103 is dd/mm/yyyy
-- SQLite can't parse dates: rearrange the text with substr()
-- Output (the new row):
-- invoice_no | issued_on
-- -----------+-----------
-- INV-1002 | 2021-06-15
Weiterführende Artikel zum Einfügen von Datumswerten
In diesem Blog:
- SQL-Anleitung: Datumsformat: gespeicherte Datumswerte in jedem gewünschten Format anzeigen
- SQL-Anleitung: DATEDIFF: Tage, Monate oder Jahre zwischen zwei Datumswerten zählen
- SQL-INSERT-Statement: die INSERT-Syntax selbst
- SQL-Anleitung: CREATE TABLE: Datumsspalten, Standardwerte und Constraints
-
Datumswerte in PostgreSQL formatieren: PostgreSQLs Datumstypen und
TO_CHAR - CSV-Daten mit BULK INSERT in SQL Server importieren: exportierte Dateien laden, inklusive Datumswerte
Offizielle Dokumentation:
- PostgreSQL: Date/Time Types
- MySQL: The DATE, DATETIME, and TIMESTAMP Types
- SQLite: Date And Time Functions
- SQL Server: Date and time data types and functions
Beekeeper Studio ist eine kostenlose & quelloffene Datenbank-GUI
Das beste SQL-Abfrage- & Editor-Tool, das ich je benutzt habe. Es bietet alles, was ich zum Verwalten meiner Datenbank brauche. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio ist schnell, intuitiv und einfach zu bedienen. Beekeeper unterstützt jede Menge Datenbanken und läuft hervorragend auf Windows, Mac und Linux.
Was Nutzer über Beekeeper Studio sagen
„Beekeeper Studio hat meinen alten SQL-Workflow komplett ersetzt. Es ist schnell, intuitiv und macht die Arbeit mit Datenbanken wieder zum Vergnügen.“
„Ich habe viele Datenbank-GUIs ausprobiert, aber Beekeeper trifft die perfekte Balance zwischen Funktionen und Einfachheit. Es funktioniert einfach.“