• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bereits formatiertes Datum in timestamp konvertieren

Hallo-Welt

Aktives Mitglied
Hallo allerseits,

Ich habe in der Datenbank eine Spalte vom Typ timestamp. Das aktuelle Datum wird hier jedoch automatisch ins Format "Y-m-d H:i:s" umgewandelt. Wie schaffe ich es, daraus wieder einen Timestamp zu machen, damit ich ihn weiterverarbeiten kann.
 
Meine, sonst gibts haue. Wenn du es richtig machen willst, dann bitte doch mit einem DateTime-Objekt.

Hat viele Vorteile, du kannst z.B. dein DateTime Objekt formatieren wie du möchtest und in deinem Beispiel ohne weiteres den Timestamp ausgeben lassen.

PHP:
$date = new \DateTime();

echo $date->format('Y-m-d H:i:s');
echo $date->getTimestamp();
 
Meine, sonst gibts haue. Wenn du es richtig machen willst, dann bitte doch mit einem DateTime-Objekt.

Hat viele Vorteile, du kannst z.B. dein DateTime Objekt formatieren wie du möchtest und in deinem Beispiel ohne weiteres den Timestamp ausgeben lassen.

PHP:
$date = new \DateTime();

echo $date->format('Y-m-d H:i:s');
echo $date->getTimestamp();
Mhh... Okay, ich werde mich dann mal tiefer in die Materie einarbeiten, wenn du meinst, deine wäre besser (außerdem möchte ich nicht nachher noch wunde Wangen haben :p).
 
Ich würde erstmal das hier hinterfragen:

Ich habe in der Datenbank eine Spalte vom Typ timestamp. Das aktuelle Datum wird hier jedoch automatisch ins Format "Y-m-d H:i:s" umgewandelt.

Was hat es für einen Sinn einen Timestamp-Wert erst (vermutlich per FROM_UNIXTIME()) in ein Datum umzuwandeln um es dann wieder zurück in einen Timestamp-Wert umzuwandeln? Wäre es nicht einfacher das Statement dahingehend anzupassen?
 
Was hat es für einen Sinn einen Timestamp-Wert erst (vermutlich per FROM_UNIXTIME()) in ein Datum umzuwandeln um es dann wieder zurück in einen Timestamp-Wert umzuwandeln? Wäre es nicht einfacher das Statement dahingehend anzupassen?
Ich trage das Datum/Uhrzeit gar nicht in die Datenbank ein, das macht die von alleine mit dem Attribut "on update CURRENT_TIMESTAMP".
Das einzige was ich wollte ist MySQL-formatiertes Timestamp auslesen und in gewöhnliches UNIX-timestamp konvertieren. Und das hab ich jetzt mit nookies Hilfe auch geschafft, also betrachtet das Thema ruhig als erledigt.
 
Was ist der Unterschied zwischen MySQL-Timestamp und einen Unix-Timestamp? Mir ist keiner bekannt.
 
Was ist der Unterschied zwischen MySQL-Timestamp und einen Unix-Timestamp? Mir ist keiner bekannt.
Dann scheint mein MySQL ein anderes zu sein als deins. EIn gewöhnlicher UNIX-Timestamp, welchen ich unter PHP erstelle wird sowas wie 1436615005. In MySQL würde dieser timestamp wie folgt erstellt: 2015-07-11 13:43:25 (ich glaube sogar, in Zeitzone +1, wie angegeben, habs jetzt aber nicht geprüft).
Und für mich ist das definitiv nicht das selbe. Möglicherweise trägst du deine timestamps aber auch nur in ein gewöhnliches INT-Feld ein, und sehen sie daher aus wie die in PHP.
 
Zuletzt bearbeitet:
Ich denke Du verwechselt hier mächtig die Datenformate. Ein Timestamp ist auch in MySQL ein Timestamp, so wie er global definiert ist und in jeder Sprache verwendet wird. Was Du meinst ist DATETIME, was kein Timestamp ist sondern die konkrete Angabe eines Datums inkl. Zeit. In MySQL kann man beide Datenformate ineinander umwandeln, je nachdem was man gerade braucht. Aus meiner Sicht sollte man bei Berechnungen auf Basis von Zeit eher das DATETIME-Format verwenden, da dies auch MySQL-intern keinen Barrieren wie einem auslaufenden Timestamp-Datum gebunden ist.

Dein Screenshot zeigt mir leider nicht wirklich was in der Spalte steht. Wenn der rechte Teil kein
Code:
SELECT * FROM table
sondern bereits die Umwandlung eines Timestamps mit FROM_UNIXTIME ist, dann hast Du etwas verwechselt.

Hier ist z.B. mal ein Bild in der beide Datenformate enthalten sind:
http://i.stack.imgur.com/HWQsr.png
Start und End sind in DATETIME, dahinter das gleiche nochmal als Timestamp.

Und zu deiner Ursprungsfrage:
Wenn Du in MySQL eine DATETIME-Spalte hast, aber in der Ausgabe einen Timestamp nutzen willst, dann verwende im SQL-Statement bereits UNIX_TIMESTAMP() um den Wert umzurechnen - es ist nicht notwendig, eher sogar hinderlich, das in PHP zu erledigen.
Wenn Du in MySQL eine TIMESTAMP-Spalte hast, dann kannst Du diese 1:1 so auslesen wie sie ist und musst sie in keinster Weise umwandeln, wenn Du deren Wert so weiterverarbeiten willst.
 
Dein Screenshot zeigt mir leider nicht wirklich was in der Spalte steht. Wenn der rechte Teil kein
  • SELECT * FROM table
sondern bereits die Umwandlung eines Timestamps mit FROM_UNIXTIME ist, dann hast Du etwas verwechselt.
Das ist aber ohne Umwandlung ausgelesen. Und wenn ich den Wert einer solchen Spalte über PHP auslese, habe ich das gleiche idiotische Format.
Wenn Du in MySQL eine TIMESTAMP-Spalte hast, dann kannst Du diese 1:1 so auslesen wie sie ist und musst sie in keinster Weise umwandeln, wenn Du deren Wert so weiterverarbeiten willst.
Ich kann es also nicht 1:1 weiterverwenden und muss es zunächst umwandeln, um ein Unix-timestamp zu erhalten, und das trotz dass der Typ in MySQL als "timestamp" definiert ist.
Warum also ist mein MySQL anders als andere?
 
Zeig doch mal die Ausgaben von

Code:
describe tabellenname

und danach

Code:
select * from tabellenname
 
Zeig doch mal die Ausgaben von

Code:
describe tabellenname

und danach

Code:
select * from tabellenname
Ich kann schon alleine aus rechtlichen Gründen unmöglich alle Spalten zeigen, aber der relevante Teil ist im Anhang. Die erste Tabelle oben ist ein Auszug aus
Code:
describe userdata
und die zweite aus
Code:
select * from userdata
 

Anhänge

  • screen.png
    screen.png
    20,9 KB · Aufrufe: 9
Zurück
Oben