Ich m�chte eine Abfrage der Postgresql Datenbank per PHP fertigstellen. Dazu ist es n�tig, dass wenn die PHP Seite aufgerufen wird immer nach Eintr�ge mit dem heutigen Datum abzufragen, jedoch scheint es ein Problem der Formatierung zu geben.
Soll ein Belegungsplan von R�umen geben, mit Hilfe der Kalendereintr�ge.
Hier mal ein Teil der Abfrage:
SELECT created_from, timestampfield01, timestampfield02, field02, field01 FROM prg_dates WHERE field02 = 'Besprechungsraum' AND timestampfield01 = current_date
Diese Abfrage ergibt kein Ergebnis, au�er man will timestampfield01 >= current_date, dann wird er korrekt ausgef�hrt.
Das Datum+ Zeit ist in der Datenbank wie folgt eingetragen: 02.07.2012 00:00:00 (manchmal mit Zeit und manchmal ohne Zeit, da Termine entweder von bis oder ganzt�gig)
Komischerweise wenn ich in der Abfrage ein bestimmtes Datum eingeben von dem ich wei�, dass es existiert , auch nichts ausgibt.
Gibt es eine M�glichkeit in die Abfrage einzubauen eine Art current_date + 2 Tage? Das w�rde schon komplett ausreichen.
Sollte wenn m�glich am Ende eine einzige Abfrage sein.
Wenn die Spalte timestampfield01 mal eine Uhrzeit enthält und mal nicht, dann solltest Du die Uhrzeit “entfernen” bevor Du sie mit current_date vergleichts:
AND date_trunc('day', timestampfield01) = current_date
(Das verhindert aber die Verwendung eines Index auf “timestampfield01”. Wenn das wichtig wäre, dann musst du einen Index auf den Ausdruck: date_trunc(‘day’, timestampfield01) anlegen.
current_date hat immer “00:00:00” als Uhrzeit (stimmt so nicht ganz, weil es eigentlich gar keine Uhrzeit hat). Beim Vergleich mit einem Timestamp wird die Bedingung daher nur erfüllt sein, wenn der Timestamp auch “00:00:00” hat.
So wie ich es jetzt verstanden habe, muss ich wohl oder übel die Datenbank verändern.
Leider kann ich das nicht machen, ist ein ziemlich großes und altes System.
In einer reinen Abfrage ist es also nicht möglich?
Nimm entweder date_trunc() (so wie von mir gezeigt) oder einen cast (so wie von Andreas gezeigt). Ändern musst Du nur Dein Statemetn.
Der Index ist nur notwendig, wenn Deine Abfrage zu langsam ist.
In einer reinen Abfrage ist es also nicht möglich?