# timestamp nur datum vergleichen



## starfoxfs (23. August 2007)

Hallo zusammen,

Ich hab momentan ein kleines Problem.

Ich möchte 2 Unix Timestamps vergleichen möchte aber von diesen Timestamps NUR das Datum vergleichen nicht die Uhrzeit.

Wie stell ich das an ?

Ein Datum ist als Timestamp in der Datenbank gespeichert und den anderen möchte ich als jetziges (aktuelles) Datum generieren und diese dann vergleichen sodas ich bei der Ausgabe stehen habe "Heute" für den Heutigen Tag , "Gestern oder älteres Datum" für vergangene Daten , "zukünftiges Datum" als Datumausgabe z.b. 29.09.2007.


----------



## Michael Engel (23. August 2007)

die DATE() Funktion hilft dir weiter


```
$timestamp1 = 2382323;
$timestamp2 = 23123123;

if(date('Ymd', $timestamp1) == date('Ymd', $timestamp2){
echo "datum gleich!";
}
```

größer, kleiner und andere vergleiche Funktionieren auch. Alternativ kannst du das ganze schon in der MySQL datenbank machen lassen:


```
SELECT DATEDIFF( NOW( ) , FROM_UNIXTIME(`Datumsfeld`) ) FROM `table`
```

zurück bekommst du dann 0, 1,2,3, -1, -2 usw Das lässt sich dann per funktion einfach auf die zugehörigen Namen visualisieren.


----------



## starfoxfs (23. August 2007)

Das ganze hab ich schon probiert nur irgendwie funktioniert dann die Ausgabe für Daten in der Zukunft nicht richtig, allerdings kann es evtl an den . zwischen dmY liegen ?


```
$heute = time();
$heutigertag = date("d.m.Y", $heute);
$datumdb = date("d.m.Y", $db["datum"]);

if  ($heutigertag == $datumdb) {

echo "Heute ist Heute";

  }

if ($heutigertag > $datumdb) {

echo "Zukunft";

}

if ($heutigertag < $datumdb) {

echo "gestern";

}
```


----------



## starfoxfs (23. August 2007)

hmm überschneidet sich das nicht  wenn das datum in der datenbank größer und kleiner sein kann als der Heutige Tag dann überschneiden sich doch die beiden if abfragen 

Wenn ich den PHPcode wie ich ihn oben gepostet habe nehme dann hab ich ganz einfach das Problem das mir alles richtig angezeigt wird nur wenn ich für Heute den 23.08.2007 habe und das Datum in der Datenbank vom nächsten Monat also vom 03.09.2007 ist wird mir dieses als altes Datum angezeigt anstatt als zukünftiges der Rest passt. Auch z.b. der 27.08.2007 wird als zukünftiges Datum angezeigt nur eben der nächste Monat wieder als vergangenes obwohl das nicht stimmt


----------



## starfoxfs (24. August 2007)

Keiner ne Idee ?


----------



## Michael Engel (24. August 2007)

Verwende die MySQL Version die ich gepostet hatte. Wenn du solche genaueren bestimmungen machen willst und nicht nur heute / Zukunft / Vergangenheit.

```
SELECT DATEDIFF(
NOW( ) , FROM_UNIXTIME( `time` ) as alter
)
FROM `log`
```

Ergebnisse:
0  = heute
-1 = morgen
-7 = nächste woche
1 = gestern
2 = vorgestern
7 = letzte woche


EDIT: nachdem Post von MAu nochmal draufgeschaut... *d.m.y* kannst du dafür nicht verwenden, *dmy* auch nicht. WENN dann *Ymd* damit ein Größer oder kleiner vergleich möglich ist.


----------



## mAu (24. August 2007)

starfoxfs hat gesagt.:


> Das ganze hab ich schon probiert nur irgendwie funktioniert dann die Ausgabe für Daten in der Zukunft nicht richtig, allerdings kann es evtl an den . zwischen dmY liegen ?
> 
> 
> ```
> ...


Bei Strings funktioniert größer/kleiner Vergleich logischerweise nicht. Woher soll denn PHP wissen, ob der String _13.03.2007_ (man beachte die Punkte) größer ist als _13.03.2006_? Lässt du die Punkte bei der [phpf]date[/phpf] Funktion weg (so wie es dir engelb schon vorgeschlagen hat), dann wird es funktionieren.


----------

