Datum und Uhrzeit in Datenbank speichern

Zneaf

Erfahrenes Mitglied
Hey Leute ;)

hat jemand eine Idee, wie man das Datum und die Uhrzeit am Besten mit PHP in einer MYSQL Datenbank abspeichert, wenn man beides hinterher wie folgt ausgeben lassen möchte

gepostet am:12.02.2011 um 16:05 Uhr (sind Beispieldaten).

Derzeit mache ich das wie folgt:

PHP:
$day = date("d");
$month = date("m");
$year = date("Y");
$hour = date("H");
$minute = date("i");
Bei dieser Methode speichere ich es jeweils einzeln als "INT" in der DB ab.
So kann ich es wie gewünscht ausgeben.
Allerdings habe ich das Problem:
Ist es z.B. 16.05 Uhr so gibt er aus 16:5 Uhr

Zuvor habe ich es so abgespeichert:

PHP:
$datum= date("d.m.Y H:i:s");
Allerdings kann man die Daten hinterher nicht so ausgeben, wie ich es gerne möchte.
Bei dieser Methode speichere ich es als DATETIME in der DB ab.

Hat jemand nen Lösungsvorschlag? =)

Vielen Dank im Voraus ;)

LG Zneaf^^
 
PHP:
$datum = date("d.m.Y");
$uhrzeit = date("H:i:s");

echo "Der Beitrag wurde am $datum um $uhrzeit gespeichert";

Du kannst das Datum bzw. die Uhrzeit doch so formatieren wie du es haben willst. Ich an deiner Stelle wurde es im DATETIME Format speichern.
 
Heyho ;)

erstmal Danke für die schnelle Antwort =)

Das würde ich auch so machen, aber die Datenbank formatiert es halt so:
datum: YYYYMMDD (=Jahr, Monat, Datum) ich hätts aber gern anders herum :D
d.h. TAG.MONAT.JAHR
uhr: bei der uhrzeit will ich die sekundenanzeige nicht drin haben^^

Kann man das iwie verändern beim auslesen aus der DB oderso?

Sorry, falls ich was falsch verstanden hab =) programmiere hobby-mäßig :D

Vielen Dank im Voraus =)

LG Zneaf ;)
 
aber die Datenbank formatiert es halt so:
datum: YYYYMMDD (=Jahr, Monat, Datum) ich hätts aber gern anders herum :D
d.h. TAG.MONAT.JAHR
uhr: bei der uhrzeit will ich die sekundenanzeige nicht drin haben^^

Die Datenbank formatiert überhaupt nichts.
Wenn Du TAG.MONAT.JAHR haben willst dann machs doch!
PHP:
date("d.m.Y");
hat tombe doch schon geschrieben.
 
Du kannst natürlich auch einen UnixTimestamp abspeichern.
Timestamp ist die sekundenzahl seit 01.01.1970. Die kannst du mittels PHP dann wieder in die Form bringen wie du sie brauchst ( date("d.m.Y",time()), Datum, Uhrzeit usw..
 
Zuletzt bearbeitet:
Bezüglich Sortierung macht natürlich Jahr-Monat-Tag mehr Sinn, deswegen würd ich nicht nur aufgrund der Ausgabe das "logisch" sinnlosere Format (Tag-Monat-Jahr) speichern. Und wie auch crsakawolf würd ich einfach mal timestamp empfehlen und lediglich bei der Ausgabe in ein lesbares Datumsformat wandeln. Da timestamp die Sekunden seit 1970 zählt, ist da also auch die Uhrzeit drin. Eine Zahl für alles.. das klingt doch ok, oder?

mfg chmee
 
Heyho ;)

erstmal vielen Dank für eure Hilfe.

Seit mir aber bitte nicht böse, wenn ich jetzt sage, dass ich das nicht wirklich verstehe^^

Bei einer MYSQL Datenbank sieht das Format für ein Datum(=Datentyp) so aus: YYYY.MM.DD

Selbst, wenn ich das Datum so abspeichere, wie ich es haben will (DD.MM.YYYY), dann wird es in der Datenbank nicht so abgespeichert. Ich hab das mehrere Male ausprobiert.
Dies kann man im Übrigen unter http://dev.mysql.com/doc/refman/5.1/de/data-types.html nachlesen kann.

Mit folgendem Code funktioniert es einwandfrei, wenn ich es nicht in einer Datenbank abspeichere. Sobald ich das in einer DB abspeichere, ist es im Format YYYY.MM.DD
PHP:
$date = date("d.m.Y.");

Falls ich etwas falsch verstanden habe, tuts mir leid.
In diesem Falle bitte ich um Verständnis und hoffe ihr erklärt es mir nochmals^^

Das Datum wird im Übrigen dann aus der Datenbank ausgelesen und zu jedem Gästebucheintrag entsprechend dazu gepostet.

Die Funktion Timestamp kenne ich leider nicht und bräuchte dazu vielleicht eine genauere Erklärung und wenn möglich ein Beispiel oderso.

Vielen Dank für eure Hilfe =)

LG Zneaf ;)
 
Hey,

also wie gesagt Timestamp sind die Sekunden ab 1970.
Du kannst ihn per PHP mit der Funktion time() ermitteln.

Speichere diesen Wert in deiner Datenbank (Typ Varchar (30)).

Also
$datum = time();

Sql = "INSERT INTO BLA (datum) VALUES ('".$datum."')"

Dann müsste deine Zeile mit etwa "1298524493" befüllt sein.

Wenn du das dann per "SELECT x FROM bla" ausliest,

dann hast du in deiner Variable dann "1298524493" stehen, also den Timestamp.

Den kannst du dann mit der Funktion date("") so wandeln wie du willst.

z.B. Datum date("d.m.Y",$datum)
Order Zeit date("H:i:s",$datum)

Oder wie auch immer.

Es besteht auch die möglichkeit den Timestamp für ein bestimmtes datum zu ermitteln

Dazu dient die Funktion mktime.

Also was du brauchst sind die funtkionen

time() -> Klick mich
date() -> Klick mich
mktime() -> Klick mich

Mit den 3 Funktionen könnte man zb auch einen Kalender programmieren ;)
 
Zurück