Datum und Uhrzeit in Datenbank speichern

Cusco

Erfahrenes Mitglied
Hi,

ich möchte die aktuelle Uhrzeit eines Eintrages ändern. Es existieren dazu zwei Felder eines soll das Datum und die Zeit der Eintrag-Erstellung und das das zweite Feld ändert sich laufend wenn auf den Eintrag zugegriffen wurde was aber nicht automatisch erfolgen soll. Ich habe heute erst mit Datenbanken angefangen weiß also so gut wie nichts. Im Moment sind die Felder vom Typ INT und enthalten den Timestamp von der Funktion Time(), es funktioniert zwar, aber in der Datenbankansicht ist nicht ersichtlich welches Datum es ist. Das möchte ich ändern.

Also wie schreibt man den Timestamp der Funktion Time in die Datenbank, welchen Variablentyp muss ich nutzen damit auch in der Datenbankansicht eine vernüftige Zeitangebe angezeigt wird und nicht nur die Nummer vom Timestamp. Für die Verwaltung muß aber wieder der normale Timestamp zurückgegeben werden.
 
INT(10), sprich INTeger mit 10 Zeichen (eig ja Ziffern)
Im phpMyAdmin siehste dann trotzdem nur die Ziffern und kein Datum á la 27.12.1992 21:58!

Wenn du den Timestamp wieder in ein "lesbares" Datum umwandeln willst, nutze date():
PHP:
date("d.m.Y H:i", $timestamp);

MfG,
Marcel

PS: Du kannst auch die Datumsfunktion von MySQL nutzen. Damit kenne ich mich aber nicht so genau aus, da ich die Methode mit dem UNIX-Timestamp bevorzuge. Kannst ja mal in der MySQL Dokumentation nachschlagen ;)
 
Am besten ist, du verwendest einen SQL Timestamp (Feldtyp ist glaube ich TIMESTAMP). Damit kannst du in SQL rechnen, und umwandeln für das Script in einen UNIX Timestamp geht während des SELECTs mit der Funktion UNIX_TIMESTAMP().
 
Hallo,

aktuell habe ich DATETIME gewählt dessen Zeit ich so zum speichern ermittle

Code:
function zeit()
{
   return date("Y-m-d H:i:s");
}

Jetzt versuche ich das Format in Timestamp zu wandeln

Code:
$ssdatum = mktime(substr($dsatz["datum"],8,2),
      substr($dsatz["datum"],10,2),
      substr($dsatz["datum"],12,2),
      substr($dsatz["datum"],4,2),
      substr($dsatz["datum"],6,2),
      substr($dsatz["datum"],0,4));

Nur leider tritt ein Fehler auf, so wird statt dem 05.01.2008 der 01.12.2007 zurück gegeben. Wo liegt der Fehler?
 
Die zahlen der vorherigen umwamndlungsroutiene waren total verdreht :(

Ich habe sie umgeschrieben und nun funktioniert sie anscheint:

Code:
function datetime_zu_timestamp($dt)
{
  $jahr    = (int) substr($dt,0,4);
  $monat   = (int) substr($dt,5,2);
  $tag     = (int) substr($dt,8,2);
  $stunde  = (int) substr($dt,11,2);
  $minute  = (int) substr($dt,14,2);
  $sekunde = (int) substr($dt,17,2);
  return mktime($stunde, $minute, $sekunde, $monat, $tag, $jahr);
}
 
Du kannst auch wie bereits erwähnt die MySQL-Funktion UNIX_TIMESTAMP() oder die PHP-Funktion strtotime() nutzen.

Habe ich versucht, aber dann kommt die Meldung das die funktion nicht existiert :( Ich bin bei T-Online und der Server hat anscheint einige macken die nach und nach dank meinen Berichterstattungen bereinigt werden. Der erste und der Schlimmste Fehler war z.B. das Dateien beim schreiben nicht kürzer werden konnten und sich damit restmüll am Dateiende befand.
 
Ich hoffe du hast beachtet, dass UNIX_TIMESTAMP() eine MySQL-Funktion und nur strtotime() eine PHP-Funktion ist.
 

Neue Beiträge

Zurück