Robert: Leben wir im Jahr 2038? -> timestamp problem

hallo,

wie amche ich aus einem mysql-timestamp (20030203203842) per php ein deutsches datum?

habe bereits strftime verwendet, aber ich bekomme stehts daten in diesem format: 19.01.2038 04:14 :(

der strf-befehl: strftime("%d.%m.%Y<br>%H:%M",$posting[pdatum])

liegt es daran, dass ich die sekunden nicht bearbeite? die brauche ich aber fürs order by in der selectabfrage.

oder arbeitet strftime nur mit dem unix-timestamp?

gibt es noch einen anderen befehl, oder bin ich gezwungen den zeitstring mit substr einzeln zu zerlegen?

mfg
robert

  1. Hallo robert,

    wie amche ich aus einem mysql-timestamp (20030203203842) per php ein deutsches datum?

    Was Du das hast ist ein MySQL-Timestamp, kein UNIX-Timestamp, der von PHP interpretiert ist.

    Mache also statt (Beispielcode)

    SELECT datumsfeld FROM tabelle

    SELECT UNIX_TIMESTAMP(datumsfeld) as datumsfeld FROM tabelle

    habe bereits strftime verwendet, aber ich bekomme stehts daten in diesem format: 19.01.2038 04:14 :(

    Ganz einfach: UNIX-Timestamps sind die Anzahl Sekunden seit dem 1.1.1970 - wenn jetzt o.g. Zahl verwendet wird, dann gibt es einen Integer-Überlauf (Zahl zu groß) und Du kommst jetzt zufällig auf 2038 - Du hättest auch auf jedes andere beliebige Datum zuwischen 1970 und 2038 kommen können.

    liegt es daran, dass ich die sekunden nicht bearbeite?

    Hä?

    die brauche ich aber fürs order by in der selectabfrage.

    Du kannst mit o.g. Code auch noch sortieren.

    oder arbeitet strftime nur mit dem unix-timestamp?

    Ups, Du kennst ja den Unterschied bereits... ;-) Prinzipiell: PHP kennt _ausschließlich_ UNIX-Timestamps.

    Christian

    --
    Hast Du einen Beitrag? Nur her damit!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[
  2. Hallo!

    habe bereits strftime verwendet, aber ich bekomme stehts daten in diesem format: 19.01.2038 04:14 :(

    SELECT DATE_TIME(TimestampSpalte, '%d.%m.%Y %k.%i') AS ts_format FROM tabelle;

    der strf-befehl: strftime("%d.%m.%Y<br>%H:%M",$posting[pdatum])

    Der Timestamp von MySQL ist in dem Sinne kein Timestamp.

    20030203203842 -> 2003-02-03 20:38:42

    MfG, André Laugks

    --
    L-Andre @ gmx.de