Datumformat in mySQL ändern

Phips_CH

Mitglied
Kann ich in phpMyAdmin das Format des Datums so ändern das denn ich in PHP dd.mm.YYYY eigebe es auch so in der mySQL-Datenbank drinsteht?
Oder muss ich es bei der Eingabe mit PHP umwandeln und beim Anzeigen wieder umwandeln?

denn Standartmässig ist das Format YYYY.mm.dd.

Gruss Phips_CH
 
(A) date_format() in MySQL anwenden.
(B) Warum wird das Datum so und nicht anders gespeichert? Hier
(C) Ich plädiere immer für timestamp ;) Egal, was man anstellen möchte, es ist das einfachste Format.

mfg chmee
 
das gibt mir einfach das Datum in deutscher Schreibweise aus.
Aber wenn ich dann mit meinem PHP-Formular einen neuen Datensatz hinzufüge und das aktuelle Datum 25.05.2011 eingebe, steht 2025-05-20 in der Datenbank.
Ist es nicht möglich, dass ich 25.05.2011 ind der Datenbank stehen habe?
 
Mach doch einfach aus den einen Eingabe Feld drei. Eins für das Jahr, eins für den Monat und eins für den Tag. Und zum Speichern fügst du sie wieder entsprechend zusammen. MySQL akzeptiert nur dieses Datumsformat, wenn dann musst du es als String speichern und immer wieder umwandeln wenn du damit rechnen willst.
 
Du könntest einfach per explode die Eingabe zerlegen und danach wieder zusammensetzen. Tatsache ist, dass das Datumsformat in MySQL per ISO 8859-1 genormt ist. hast Du denn zumindest die Links aufgemacht, die ich Dir gegeben habe?

PHP:
$datum_in = "25.10.2011";

$zerlegt = explode(".",$datum_in);

$datum_richtig = $zerlegt[2]."-".$zerlegt[1]."-".$zerlegt[0];
echo $datum_richtig;
Hingescriptet, könnte fehlerhaft sein..

mfg chmee
 
ja hab ich. :-)

Das heisst ich komme nicht drum rum, das Format beim Eintragen umzuwandeln und auch wieder beim Auslesen.

Dies ist möchte ich da ich eine Sammlung von Terminen habe. Durch das eingeben in einem Formular kommen immer neue hinzu. Als Info will ich diese auf einer anderen Seite wieder ausgeben.

Dafür ist das Deutsche-Format schöner anzusehen und auch verständlicher.

Gruss
Phips_CH
 
Nun mach es Dir nicht so schwer, nimm Timestamp, damit hast Du zwei Umrechnungen - vor dem Eintrag in die DB und die beim Auslesen. Du erzählst, was Dein Programm machen soll, letztendlich erkenne ich aber nicht, wo das Problem liegen soll. Wie schön eine Ausgabe ist, hat mit der DB-Speicherung nichts zu tun.

PHP:
$datum_in="25.10.2011";
echo $datum_in."</br>";

$zerlegt=explode(".",$datum_in);
$timestamp_in=mktime(0,0,0,$zerlegt[1],$zerlegt[0],$zerlegt[2]);

echo $timestamp_in."</br>";
// -- damit hast Du ne timestamp vom datum --
// ---------
// -- und wieder zurück
$datum_out=date("d.m.Y",$timestamp_in);

echo $datum_out."</br>";
// -- so schwer?

mfg chmee
 
speichert Timestamp nicht das aktuelle Datum?

Ich möchte aber eine Terminverwaltung erstellen. das heisst, Termine mit Datum und Treffpunkt, Ort etc speichern. Dafür muss ich Datum eigeben können die erst sein werden.

Ich arbeite mit Dreamweaver und hab folgenden Code.

PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2"))
{
  $insertSQL = sprintf("INSERT INTO pobi_termine (ter_termin, ter_wann, ter_wo) 
VALUES (%s,str_to_date('%s', '%s'), $s)",
                       GetSQLValueString($_POST['ter_termin'], "text"),
                       GetSQLValueString($_POST['ter_wann'],"%d.%m.%Y"),
                       GetSQLValueString($_POST['ter_wo'], "text"),

es funktioniert aber nicht.

wenn ich, wie im folgenden Beispiel nur eine Feld mit dem Datum habe, funktioniert der Code.

PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {     
$insertSQL = sprintf("INSERT INTO pobi_termine (ter_wann) VALUES (str_to_date('%s', '%s'))",
mysql_real_escape_string($_POST['datum']),'%d.%m.%Y');

Was ist beim ersten Code falsch?

Gruss
Phips_CH
 
(Unix)Timestamp an sich ist erstmal eine Normierung, nämlich der vergangenen Sekunden seit (ich glaub) 1.1.1970 und wird in einer simplen 10 oder 11Bit-Integer gespeichert. In meinem php-Beispiel hast Du das Umrechnen von Datum nach timestamp mktime() und das Zurückformen mit date() in das "von Dir gewünschte Datumsformat".

Sei mir nicht böse, aber schaust Du Dir an, was man Dir an Häppchen gibt?
mfg chmee
 
Zuletzt bearbeitet:
Sorry, nur zum richtig stellen:

...10 oder 11Bit-Integer gespeichert.

Es gibt keine 10 oder 11Bit-Integers. Integer ist entweder 16 oder 32Bit groß. Es gibt Integer-Implementierungen die größere Werte als 32Bit (4Byte entspricht signed 2.147.483.647 Max oder unsigned 4.294.967.295) annehmen können. Diese werden in der Regel aber Bigint genannt.
 
Zurück