# Differenz: MySQL-Zeit / UNIX-Zeit formatiert ausgeben?



## multimolti (3. September 2007)

Hallo!

Ich habe einen Zeitpunkt in meiner Datenbank gespeichert (z.B. 2007-08-24 17:36:13) und den momentanen Zeitpunkt über date() als UNIX-Timestamp.
Damit ich die verrechnen kann, müssen die erst mal gleiches Format sein, also habe ich eine Funktion gebastelt, die meine MySQL-Zeit in den Unix-Timestamp umwandelt. Habe sowas nicht fertig gefunden, aber selbst machen dauert ja nicht lange.

Jetzt kann ich die einfach miteinander verrechnen, und bekomme die Differenz der UNIX-Zeiten raus.
Wie kann ich es jetzt am Besten machen, das ich eine Ausgabe bekomme, je nachdem wie groß diese Differenz ist? Also z.B. dass da dann "3 Tage 4 Std. 25 Min." steht oder auch nur "2 Std. 15 Min."? Vielleicht kann ichs machen, indem ich abfrage, wie groß die Differenz ist (60 = 1 Min, 3600 = 1 Std,...) und das dann unterschiedlich formatiere, aber gibts auch einen einfacheren Weg?
Oder am besten wäre eine fertige Funktion, die dass alles macht. Kennt ihr sowas?

Schon mal Danke...


----------



## Online-Skater (3. September 2007)

Auch du guck mal hier
Alles mit SQL lösbar.

Die Funktion DATEDIFF und NOW() sollten helfen ansonsten da mal nachschauen


----------



## multimolti (4. September 2007)

Dieses DATEDIFF macht leider nur die Tage, ich bräuchte mindestens noch Stunden!

EDIT:
Dafür gibt es TIMEDIFF, das ist gut, aber ich weiß leider nicht wirklich, wie ich das anwenden soll. Habe das gemacht:

```
$result2 = mysql_query("TIMEDIFF('$lastlogin',NOW());");
```
Aber jetzt kann ich nicht mit mysql_fetch_assoc arbeiten, das meint immer das $result2 keine supplied ressource sei.
Wie muss ich das denn verwenden?


----------



## Denfie (4. September 2007)

Also ich stand auch schon mal vor dem Problem hab mir dann aber eine bestimmt zu komplizierte ausgabe geschrieben aber ich kann sie dir ja mal posten.

zeit = Datetime als MySQL-Datenbank Stempel


```
$sql = "SELECT ((UNIX_TIMESTAMP())-UNIX_TIMESTAMP(zeit)) As time FROM Datenbank";

    if( ($erg_user[$i]['time']/60) < 1)
     echo "vor < 1 Minute";
    else
     if( ($erg_user[$i]['time']/60) < 5)
      echo "vor < 5 Minuten";
     else{
      $hilfe = 0;
      $sekunden = $erg_user[$i]['time']%60;
      $hilfe = floor($erg_user[$i]['time'] / 60);
      $minuten = $hilfe%60;
      $hilfe = floor($hilfe / 60);
      $stunden = $hilfe%24;
      $tage = floor($hilfe / 24);
      if($erg_user[$i]['zeit'] != "0000-00-00 00:00:00")
      {
       if($tage > 0)
        echo "vor ".$tage." Tagen ";
       else
        if($stunden > 0)
         echo "vor ".$stunden." Stunden ";
        else{
         echo "vor ".$minuten." min ";
         echo $sekunden." sek ";
        }
```


----------



## multimolti (5. September 2007)

Danke vielmals, geht!


----------

