Handling von Datum und Zeit in MySQL
In diesem Artikel geht es um alles was mit Datums und Zeitwerten zusammenhängt. Beschrieben wird sowohl das einfache formatieren eines Datums sowie auch die Umwandlung einer Datumsausgabe in verschiedene deutsche Ausgabeformate.
1. Einleitung, DATE_FORMAT
Mit dem Befehl DATE_FORMAT (Datum, Formatanweisung) werden Abfrageergebnisse von DATE und DATETIME Spalten entsprechend den Erfordernissen formatiert.
Hier zunächst eine Tabelle mit den möglichen Formatstrings und dem was sie bewirken.
Formatcode | Beschreibung |
%a | Abgekürzter Wochentagsname (Sun..Sat) |
%b | Abgekürzter Monatsname (Jan..Dec) |
%c | Monat numerisch, ohne führende Null (0..12) |
%D | Tag des Monats mit Englischem Suffix (0th, 1st, 2nd, 3rd,…) |
%d | Tag des Monats numerisch, mit führender Null (00..31) |
%e | Tag des Monats numerisch, ohne führende Null (0..31) |
%f | Microsekunden (000000..999999) |
%H | Stunden (00..23) |
%h | Stunden (01..12) |
%I | Stunden (01..12) |
%i | Minuten (00..59) |
%j | Tag des Jahres (001..366) |
%k | Stunden (0..23) |
%l | Stunden (1..12) |
%M | Monatsname (January..December) |
%m | Monat, numerisch mit führender Null (00..12) |
%p | AM oder PM |
%r | Zeit, 12 Stunden (hh:mm:ss gefolgt von AM oder PM) |
%S | Sekunden mit führender Null (00..59) |
%s | Sekunden mit führender Null (00..59) |
%T | Zeit (Stunden, Minuten Sekunden), 24 Stunden (hh:mm:ss) |
%U | Woche (00..53), wenn Sonntag der erste Tag der Woche ist |
%u | Woche (00..53), wenn Montag der erste Tag der Woche ist |
%V | Woche (01..53), wenn Sonntag der erste Tag der Woche ist, benutzt mit %X |
%v | Week (01..53), wenn Montag der erste Tag der Woche ist, benutzt mit %x |
%W | Wochentags Name (Sunday..Saturday) |
%w | Tag der Woche (0=Sunday..6=Saturday) |
%X | Jahr für die Woche wenn Sonntag der erste Tag der Woche ist, numerisch, vier Zahlen, benutzt mit %V |
%x | Jahr für die Woche wenn Montag der erste Tag der Woche ist, numerisch, vier Zahlen, benutzt mit %v |
%Y | Jahr, vier Zahlen |
%y | Jahr, vier Zahlen |
%% | Ein literales % Zeichen |
Ein paar Beispiele für die Formatierung von DATE und DATETIME Werten
Wenn eine Uhrzeit mit ausgegeben werden soll muss das Feld natürlich auch die entsprechenden Werte mit gespeichert haben, also z.B. DATETIME oder Unix Timestamp.
SELECT DATE_FORMAT('2007-06-28 14:23:12', '%d.%m.%Y');
Ausgabe: 28.06.2007
SELECT DATE_FORMAT('2007-06-28 14:23:12', '%d.%m.%Y um %H:%i:%s');
Ausgabe: 28.06.2007 um 14:23:12
SELECT DATE_FORMAT('2007-06-28 14:23:12', '%d.%m.%Y um %T');
Ausgabe: 28.06.2007 um 14:23:12
SELECT DATE_FORMAT('2007-06-28 14:23:12', '%T');
Ausgabe: 14:23:12
Wenn anstelle eines fixen Datums, wie in den obigen Beispielen, auf eine Spalte zugegriffen werden soll wird die Abfrage so notiert:
SELECT DATE_FORMAT(datumsspalte, '%d.%m.%Y um %T');
Liegt der Datum als Unix Timestamp vor, z.B. 1183032899 = 28.06.2007 um 14:14:59 kann man mit dem Befehl FROM_UNIXTIME den Datumswert einfach umwandeln.
SELECT DATE_FORMAT(FROM_UNIXTIME('1183032899'), '%d.%m.%Y um %T') AS realdatum
Ausgabe: 28.06.2007 um 14:14:59
Umgekehrt wird das mit UNIX_TIMESTAMP
SELECT UNIX_TIMESTAMP('2007-06-28 14:14:59') AS unix_sekunden
Ausgabe: 1183032899
Keine Kommentare vorhanden