PHP / MySql - Timestamp Frage.

...komplette Frage anzeigen

3 Antworten

oder du verwendest

date('d', $timestamp) und vergleichst mit date('d', time())

sind beide gleich, ist es der gleiche tag.

hat entgegen der order by id asc sache von meinem vorgänger den vorteil, dass du genau das abfragst was du willst

mrGalileo 13.05.2013, 19:08

Eigentlich genau was ich such (das mit date()). Doch wie kann ich ermitteln ob der Eintrag von Gestern ist? Denn ich könnte es ja so machen:

$gestern = date('d', $timestamp) - 1;

Nur wenn es der erste Tag im Monat ist, dann gibts Probleme, da es keinen tag "0" Gibt :D

0
TheQ86 13.05.2013, 19:11
@mrGalileo

date('d', time()) liefert dir den heutigen tag

date('d', time()-86400) liefert dir den gestrigen tag

Das 2. ist WICHTIG, denn was machst du, wenn heute der 1. ist? dann gibt $gestern = date('d', $timestamp) - 1; dir nämlich 0 aus ;-)

0
mrGalileo 13.05.2013, 19:17
@TheQ86

Okay. Aber wie muss ich dann meine Abfrage gestalten?

$get = mysql_query("SELECT * FROM beispiel WHERE timestamp = ?? (von gestern)

Ich könnte ja aber auch die Struktur ändern und statt den kompletten timestamp einzutragen nur den Tag.

So könnte ich folgendes benutzen:

$get = mysql_query("SELECT * FROM beispiel WHERE tag = 13")

Oder?

Aber da gibts dann wieder probleme mit dem Tag 0 :D

0
TheQ86 13.05.2013, 19:29
@mrGalileo

OK, warum PHP code schreiben, wenn SQL genügt. Ist gleichzeitig auch performanter

SELECT * FROM beispiel WHERE DAY(timestamp) = DAY(NOW()) #selektiert alle beispiele, wo der timestamp von heute ist
SELECT * FROM beispiel WHERE DAY(timestamp) = DAY(DATE_SUB(NOW(), INTERVAL 1 DAY)) #selektiert alle beispiele, wo der timestamp von gestern ist
0
mrGalileo 13.05.2013, 19:32
@TheQ86

Wow.. so einfach ist das? Wofür dann die ganze Diskussion :D

Danke, wieder was dazu gelernt <3

0
TheQ86 13.05.2013, 19:34
@mrGalileo

man wird sehr oft dazu verleitet php code zu schreiben. aber die meisten SQL Datenbanken bieten eine Fülle von eigenen Funktionen für Datum/Zeit/Zahlen und Strings :-D

0
mrGalileo 13.05.2013, 19:37
@TheQ86

Aber ich brauche ja das ganze im PHP skript. Also brauch ich doch PHP?

$get = mysql_query("SELECT * FROM beispiel WHERE DAY(timestamp) = DAY(NOW())");

Das geht doch, oder?

0
TheQ86 13.05.2013, 19:42
@mrGalileo

Natürlich brauchst du PHP um mit dem Query-Ergebnis was anzufangen ;-)

Und ja, es geht so wie du geschrieben hast.

Nur ist die Query 1000 mal schneller, als würdest du schreiben

 SELECT * FROM beispiel;

und das ganze dann in php nach datum "ordnest"

0
mrGalileo 13.05.2013, 19:45
@TheQ86

Ah.. verstehe was du meinst! Danke vielmals für deine Hilfe :)

0

Könntest du nicht einfach die beiden Einträge jeweils abfragen, in Variablen speichern und diese dann mittels PHP vergleichen?

mrGalileo 13.05.2013, 19:03

Da dort in Zukunft mehrere Einträge hinzukommen, bringt das nichts. Und mit dem Vergleich sehe ich doch nur welcher neuer und welcher älter ist. ?

0

Ich würde "ORDER BY timestamp ASC" benutzen.

Aber schreib mich mal an - ich denk' ich kann dir auch sonst helfen wenn du Fragen hast!

mrGalileo 13.05.2013, 19:04

Hm.. ich dachte da eigentlich an strftime.. fällt dir dazu was ein?

0
triopasi 13.05.2013, 19:06
@mrGalileo

Naja dann musste trotzdem noch irgendwie prüfen, was neuer ist. Ich finde deswegen das mit "ORDER BY" besser.

0
triopasi 13.05.2013, 19:12
@mrGalileo

Syntax: ORDER BY [ASC/DESC]

Das ASC/DESC ist die "Sortierungsreihenfolge": ASC = aufsteigend DESC = absteigend

ORDER BY würde ich hier im Zusammenhang mit einem SELECT benutzen.

0

Was möchtest Du wissen?