1
Diese Arbeit:Suche nach Ferien doy IN (string) (Postgresql)
WITH month AS (
SELECT date_part('doy',d.dt) as doy,
dt::date as date
FROM generate_series('2017-01-01','2017-01-15', interval '1 day') as d(dt)
)
SELECT date,
CASE
WHEN doy IN (1,2,3) THEN 0 ELSE 8 END
FROM month
http://sqlfiddle.com/#!15/aed15/10
Aber wenn ich speichern 1,2,3 als String
CREATE TABLE holidays
(id int4,days character(60));
INSERT INTO holidays
(id,days)
VALUES
('2017','1,2,3');
.. .und ersetzen 1,2,3 mit dieser Zeichenkette:
WITH month AS (
SELECT date_part('doy',d.dt) as doy,
dt::date as date
FROM generate_series('2017-01-01','2017-01-15', interval '1 day') as d(dt)
)
SELECT date, days,
CASE
WHEN doy::text IN (days) THEN 0 ELSE 8 END
FROM month
LEFT JOIN holidays ON id=2017
http://sqlfiddle.com/#!15/aed15/13
Es scheint, dass "Tage" nicht korrekt ist. Aber ich kann nicht herausfinden, wie.
TIA,
Ich habe die Feiertage getrennt zu speichern. Was ist dein Vorschlag? – sibert
Ich hätte wahrscheinlich Urlaubstisch mit konkreten Daten. hundert jahre hilidays wäre immer noch eine kleine ausfallstabelle gegen jaoin gegen –
WANN doy = ANY (string_to_array (days, ',') :: integer []) DANN 0 ELSE 8 scheint auch zu funktionieren. Irgendwelche anderen Vorschläge? – sibert