Eingegebenes Datum MySql-Konform machen

Hallo zusammen,

hat jemand eine Ahnung, wie ich ein in ein Formular eingegebenes Datum (Format 1.5.03) in das MySql-Format 2003-05-01 umwandeln kann, damit ich das dann in die DB eintragen kann?

Gruß SW
 
ich mache das immer so: wandle das Datum in einen Timestamp (also Anzahl der Sekunden seit 1.1.1980) und speichere das als Integer-Zahl in MySQL. Diese kannst Du dann für die Ausgabe entsprechend wieder formatieren. ;)


Alles andere hat bei mir immer zu irgendwelchen Problemen geführt.
 
Kleine Anmerkung:

Das Referenzdatum für die Unix-Zeit ist nicht 1.1.1980 sondern 1.1.1970. Ansonsten schließe ich mich an.

Gruß
Falk
 
Hallo, das sollte Deine gesuchte Lösung sein:
PHP:
<?php
$dat = '1.5.03';
$arDat = explode('.', $dat);
$mysqlDat = strftime ('%Y-%m-%d', mktime(0,0,0,$arDat[1],$arDat[0],$arDat[2]));
?>
mfg, snuu
 
snuu und Satan: Super! :nospam:
(Edit: hm, wohl gelöscht)


Zum Thema:
Ist es so wichtig, dass du den MySQL-Timestamp benutzt?
Ich kann dir, wie Dunsti, nur vom MySQL-Timestamp abraten.
Numm statdessen lieber den Unxi Timestamp.
Ausserdem bietet PHP einige Funktionen zum Timestamp an, welche den MySQL-Timestamp dann eigentlich überflüssig machen.

Beispiel: Du hast einen MySQL-Timestamp, beispielsweise 2003-04-05.
Nun willst du ihn in dieses Format umwandeln:
Freitag, 4. April 2003
??

Unix-Timestamp:
Du kannst die Formular eingabe sofort in den Timestamp umrechnen:
$timestamp = mktime (0, 0, 0, $monat, $tag, $jahr);
Und schon hast du einen Unix-Timestamp.
Den kannst du dann als 11 Stelligen Integer in die MySQL-Datenbank eintragen.
Wenn du jetzt nun ein Dateum wie oben genannt haben willst (
Freitag, 4. April 2003), dann brauchst du nur die Funktion date nehmen, und schon hast du das Datum:
PHP:
echo date("l, j. F Y", $timestamp);
Gut, die Wochentage und Monate sind Englisch, aber es ist immernoch einfacher, die Englischen Wörter zu übersetzten, als einen MySQL-Timestamp in ein Deutsches Datzum umzuwandeln.
 
Zurück