Cheatsheet Datum

1. Datum und Zeit in MySQL-Tabellen aufnehmen - Spalten vorbereiten

TIME erwartet Eingaben wie 'hh:mm:ss'
DATE erwartet Eingaben wie 'YYYY-MM-DD'
DATETIME erwartet Eingaben wie 'YYYY-MM-DD hh:mm:ss'
YEAR erwartet Eingaben wie 'YYYY'
TIMESTAMP erwartet Eingaben wie 'YYYY-MM-DD hh:mm:ss'
wobei dies der UTC-Zeitzone zugeordnet wird

Hinweis 1: Wenn du die Tabelle mit Hilfe von PHPMyAdmin erstellst, musst du keine Breite für die Spalten angeben wie z. B. bei VARCHAR oder INT!

Hinweis 2: Theoretisch kannst du Datum und Zeit auch als normaler String (VARCHAR) ablegen, damit verspielst du dir aber die Chance, mit Queries zu sortieren (v.a. dann, wenn du das im deutschen Datums-Format vornimmst).


2. Aktuelles Datum, aktuelle Zeit mit einer Query in Tabelle ablegen (ohne PHP)

INSERT INTO test_time SET zeit = CURTIME(), datum = CURDATE(), datum_zeit = NOW()

Hinweis: Damit das funktioniert, muss auf dem Produktiv-Server im Datenbank-System die Zeit richtig eingestellt sein!


3. Datumstrings mit PHP erzeugen

Grundsätzliches Problem:
MySQL hat für Datum/Zeit spezielle Datentypen, PHP jedoch nicht. Deshalb muss man mit PHP Strings vorbereiten, die für MySQL richtig aufgebaut sind, damit Sie "reinpassen".

Beispiel:
Ich möchte das Datum / Zeit vom aktuellen Aufruf des PHP-Scripts wissen (um das darauf in eine Tabelle aufzunehmen).

<?php
// Formatierung für MySQL
$myDateTimeStr = date('Y-m-d H:i:s')
// Ausgabe: 2026-08-16 22:23:34
?>


Die "Zauberzeichen" für PHP-date():

Y Jahr, vierstellig
m Nummer des Monats, zweistellig
d Tag des Monats, zweistellig
H Stunden im 24-Stunden-Format, zweistellig
i Minuten, zweistellig
s Sekunden, zweistellig

PHP-Handbuch: date()


4. Datum aus Tabelle holen und in der Query formatieren (ohne PHP)

// kein deutsches Datums-Format
SELECT datum FROM test_time
// Ausgabe wie in USA: 'YYYY-MM-DD'

// im deutschem Datums-Format
SET lc_time_names = 'de_DE'
SELECT DATE_FORMAT(datum, ?%e.%m.%y?) AS datum FROM test_time


Die "Zauberzeichen" für MySQL:

%d Tag mit führender Null
%e Tag ohne führende Null
%m Monat in Zahlen
%M Monat ausgeschrieben
%y Jahr 2-stellig
%Y Jahr 4-stellig

W3Schools: DATE_FORMAT()