Zeitabfrage Problem mit Buchstaben

Hallo,

ich arbeite gerade an einem Projekt: Digitaler Einkaufsführer. Hier soll auch eine Abfrage integriert werden, bei der man abfragen kann, ob das Geschäft jetzt gerade offen hat.

Bei Zahlen ist dies ja kein Problem, aber wie kann ich zum Beispiel auch ausgeben lassen, wenn ein Geschäft als Zeitangabe “nach telefonischer Vereinbarung” beinhaltet?

Ein weiteres Problem ist, dass manche Gastronomien als Endzeit: “open end” haben. Wie könnte man das Problem lösen?

Ich schreibe euch mal meine derzeitige Datenaufnahme für ein Geschäft mit “telefonischer Vereinbarung” und ein Restaurant mit “open end” dazu:


Abfrage:
with geoeffnet as (select id, current_timestamp as “Jetzt”, tag, uhrvon,
uhrbis
from oeffnungszeiten
where current_date between gueltigvon and gueltigbis
and current_time between uhrvon and uhrbis
and extract(dow from current_date) = tag)

Select k.* from kiezfuehrer_nord_geschaefte_final k, geoeffnet o
where k.id= o.id

(4, 1, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 2, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 3, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 4, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 5, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 6, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),
(4, 0, DATE ‘01.03.2013’, date ‘31.12.2099’, time '17:00 ', time ‘open end’),

(55, 1, DATE ‘01.03.2013’, date ‘31.12.2099’, time 'nach telefonischer Vereinbarung ', time ‘nach telefonischer vereinbarung’),
(55, 2, DATE ‘01.03.2013’, date ‘31.12.2099’, time 'nach telefonischer Vereinbarung ', time ‘nach telefonischer vereinbarung’),
(55, 3, DATE ‘01.03.2013’, date ‘15.11.2099’, time '16:00 ', time ‘19:00’),
(55, 4, DATE ‘01.03.2013’, date ‘31.12.2099’, time 'nach telefonischer Vereinbarung ', time ‘nach telefonischer vereinbarung’),
(55, 5, DATE ‘01.03.2013’, date ‘31.12.2099’, time 'nach telefonischer Vereinbarung ', time ‘nach telefonischer vereinbarung’),
(55, 6, DATE ‘01.03.2013’, date ‘31.12.2099’, time 'nach telefonischer Vereinbarung ', time ‘nach telefonischer vereinbarung’),
(55, 0, DATE ‘01.03.2013’, date ‘15.11.2099’, time ’ ', time ‘’);

Für Anregungen wäre ich sehr Dankbar :slight_smile:

Grüße,
Bernd

Füg je ein Textfeld ein, wo das drin steht, und arbeite mit COALESCE. Dazu ein Check, daß max. 1 Feld NULL sein darf.

test=# create table bla (f1 int, f2 int, check(case when f1 is null then 1 else 0 end + case when f2 is null then 1 else 0 end < 2));
CREATE TABLE

Der Check muß natürlich sein, daß eine der 2 Spalten NULL ist, also auf = 1 prüfen, sorry.