Hallo,
Ich möchte einige Vergleiche mit DATE-Spalten durchführen wie z.B. “where datecol = ‘2001-01-02’”, leider schlagen derartige Abfragen immer fehl - da bei PostgreSQL ja auch noch eine Zeit abgespeichert wird.
PostgreSQL vergleich also z.B. “2001-01-02 12:20” mit “2001-01-02 00:00” und kommt zu dem Schluss dass beide nicht ident sind.
Gibts eine Möglichkeit bei Vergleichen die Zeitinformation zu ignorieren?
Danke im Vorraus, lg Clemens
Linuxhippy:
Hallo,
Ich möchte einige Vergleiche mit DATE-Spalten durchführen wie z.B. “where datecol = ‘2001-01-02’”, leider schlagen derartige Abfragen immer fehl - da bei PostgreSQL ja auch noch eine Zeit abgespeichert wird.
PostgreSQL vergleich also z.B. “2001-01-02 12:20” mit “2001-01-02 00:00” und kommt zu dem Schluss dass beide nicht ident sind.
Gibts eine Möglichkeit bei Vergleichen die Zeitinformation zu ignorieren?
Danke im Vorraus, lg Clemens
Ja, du kannst z.B. nach DATE casten:
test=# select now() = current_date;
?column?
----------
f
(1 Zeile)
Zeit: 84,818 ms
test=*# select now()::date = current_date;
?column?
----------
t
(1 Zeile)
Zeit: 17,933 ms
Andreas
Naja, wenn ich ‘2001-01-01’ nach DATE caste, hab ich doch wieder die Zeit im vergleich drinnen, oder?
Linuxhippy:
Naja, wenn ich ‘2001-01-01’ nach DATE caste, hab ich doch wieder die Zeit im vergleich drinnen, oder?
Warum probierst Du es nicht einfach mal?
Andreas
Gerade gemacht, funktioniert nicht.
Das gesuchte Datum lautet: “2011-03-18 16:16:53.626”
select * from kassabuch WHERE datum = DATE(‘2011-03-18’) ergibt keinen Eintrag.
Gerade gemacht, funktioniert nicht.
Das gesuchte Datum lautet: “2011-03-18 16:16:53.626”
select * from kassabuch WHERE datum = CAST(‘2011-03-18’ AS DATE) ergibt kein match
Update: wenn ich datum nach DATE caste, klappts
Danke
Das schreibt man besser als
DATE ‘2011-03-18’