PostgreSQL Datum bei WHERE

Alles zum PostgreSQL-Server

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11464
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

PostgreSQL Datum bei WHERE

Beitrag von AUGE_OHR » Mi, 27. Jun 2012 8:26

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) 3573 mal betrachtet
btw. in welchen Format bekommt man "Datum" von PostgreSQL ?
gruss by OHR
Jimmy

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2536
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von UliTs » Mi, 27. Jun 2012 8:35

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.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2228
Registriert: Fr, 08. Feb 2008 21:29

Re: PostgreSQL Datum bei WHERE

Beitrag von georg » Mi, 27. Jun 2012 8:36

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
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7315
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von Tom » Mi, 27. Jun 2012 9:53

Ich übergebe bisher nur an PostGre, da klappt es problemlos mit DtoS().
Herzlich,
Tom

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2536
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von UliTs » Mi, 27. Jun 2012 10:13

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
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7315
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von Tom » Mi, 27. Jun 2012 10:17

Letzteres.
Herzlich,
Tom

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2536
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von UliTs » Mi, 27. Jun 2012 10:31

Tom hat geschrieben:Letzteres.
Und das funktioniert ohne Hochkommata's im String?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7315
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von Tom » Mi, 27. Jun 2012 12:00

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.
Herzlich,
Tom

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2536
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von UliTs » Mi, 27. Jun 2012 12:32

Dann bin ich ja beruhigt :-) . Aber schon praktisch, wenn man auf die Bindestriche verzichten kann :D
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11464
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: PostgreSQL Datum bei WHERE

Beitrag von AUGE_OHR » Mi, 27. Jun 2012 21:36

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 ?
gruss by OHR
Jimmy

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2536
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: PostgreSQL Datum bei WHERE

Beitrag von UliTs » Mi, 27. Jun 2012 22:56

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 !
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11464
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: PostgreSQL Datum bei WHERE

Beitrag von AUGE_OHR » Fr, 29. Jun 2012 1:52

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"
gruss by OHR
Jimmy

Antworten