
| 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).
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!
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
?>
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 |
// 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| %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 |