Seite 1 von 1

PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 8:26
von AUGE_OHR
hi,

ich habe Fragen ...

bei einem "WHERE" : was darf man als Operanten wie verwenden ?

a.) mit Zeichenwerten
b.) mit numerischen Werten
c.) mit Datumswerten
d.) mit logischen Werten

bei a.) und b.) denke ich ist es klar, aber wie geht c.) für "WHERE" ? geht so was (auch) in SQL ?
SQL_WHERE.PNG
SQL_WHERE.PNG (27.02 KiB) 9736 mal betrachtet
btw. in welchen Format bekommt man "Datum" von PostgreSQL ?

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 8:35
von UliTs
Das kommt auf die SQL-Umsetzung.
Es geht, wenn es die Funktion CtoD als Scalarfunktion gibt. :-)
Wenn Du stattdessen

Code: Alles auswählen

WHERE Test3 > '2012-05-05' AND Test3 < '2012-05-05'
verwendet funktioniert dies vermutlich in jedem SQL-Dialekt.

Uli

P.S.
Die Verwendung von .AND. statt AND kann meines Erachtens nur der Advantage Database Server (ADS) und der auch nur bei Verwendung der DLL-Schnittstelle.

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 8:36
von georg
Hallo, Jimmy -


leider ist die PostgreSQL-Seite etwas langsam im Moment. Ich gehe aber davon aus, dass auch PostgreSQL ein Datum als 'YYYY-MM-DD' abspeichert.

Normalerweise sind die SQL-Dialekte recht robust, was Vergleiche angeht, so hat MySQL kein Problem mit beiden Abfragen:

Code: Alles auswählen

SELECT * FROM table WHERE numfield = 1
SELECT * FROM table WHERE numfield = '1'
Im Zweifel einfach die SQL-Eingabe aufrufen und ausprobieren.


Gruss,

Georg

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 9:53
von Tom
Ich übergebe bisher nur an PostGre, da klappt es problemlos mit DtoS().

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 10:13
von UliTs
Tom hat geschrieben:Ich übergebe bisher nur an PostGre, da klappt es problemlos mit DtoS().
Hallo Tom,
meinst Du, dass PostGre die Funktion DtoS() auswertet?
Oder bildest Du einen String, bei dem Du zur Bildung DtoS() verwendest?

Uli

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 10:17
von Tom
Letzteres.

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 10:31
von UliTs
Tom hat geschrieben:Letzteres.
Und das funktioniert ohne Hochkommata's im String?

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 12:00
von Tom
Hallo, Ulli.

Das entsprechende Feld ist als "timestamp" angelegt, die Übergabe erfolgt per DtoS in Anführungszeichen oder als NULL (ohne Anführungszeichen), wenn es leer ist.

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 12:32
von UliTs
Dann bin ich ja beruhigt :-) . Aber schon praktisch, wenn man auf die Bindestriche verzichten kann :D
Uli

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 21:36
von AUGE_OHR
hi,

danke für euer Antworten.
ich hatte es mir schon gedacht das ich mein Modul anpassen muss was für ein Codeblock gedacht ist.

ok, also keine Function "im" String wie DTOC() und ".AND." ohne die "." (Punkt)

Frage : wie ist es bei Type "L" in PostgreSQL ?

Re: PostgreSQL Datum bei WHERE

Verfasst: Mi, 27. Jun 2012 22:56
von UliTs
TRUE, FALSE und NULL

Vorsicht, manche Dialekte sind so blöd, dass man explizit

Code: Alles auswählen

Aktiv=TRUE
schreiben muss, statt einfach nur

Code: Alles auswählen

Aktiv
bei einem logischen Feld namens Aktiv!

Uli

P.S.
Hat Aktiv den Wert NULL, hat sowohl

Code: Alles auswählen

Aktiv=TRUE
als auch

Code: Alles auswählen

Aktiv=FALSE
das Ergebnis FALSE !

Re: PostgreSQL Datum bei WHERE

Verfasst: Fr, 29. Jun 2012 1:52
von AUGE_OHR
danke für eure Antworten. so langsam bekomme ich das in Griff ...
nun muss ich "nur" noch die Konstanten http://doxygen.postgresql.org/include_2 ... pe_8h.html durchforsten welche "Type" ich wie Xbase++ "zuordne"