Ich habe eine plpgsql-Funktion, die TSTZRANGE zwischen zwei Daten nach gespeicherten Regeln in einer Tabelle mit dem Namen timeslots
generiert. Es funktioniert gut, aber jetzt habe ich eine neue Anforderung und fügte ein TSTZRANGE-Feld datespan
der timeslots
-Tabelle hinzu, die ich auch filtern muss, so dass nur Bereiche zurückgegeben werden, die in diesem Feldwert enthalten sind.SQL-Abfrage auf die generierten Ergebnisse filtern
Zeigt Ihnen hier Teil der Funktion, die ich ändern muss. eid
, fromdate
und todate
sind Parameter, die an die Funktion übergeben werden.
SELECT TSTZRANGE(
(series::DATE + ts1.start)::TIMESTAMPTZ AT TIME ZONE 'UTC',
(series::DATE + ts1.end)::TIMESTAMPTZ AT TIME ZONE 'UTC'
) AS range
FROM
timeslots AS ts1,
generate_series(fromdate, todate, '1 day') AS series
WHERE
eid = ts1.event_id AND
EXTRACT(DOW FROM series) = ANY(ts1.weekdays)
ORDER BY
range
Also, was ich tun möchte, ist ein Filter wie WHERE range <@ ts1.datespan
hinzufügen, aber ich kann es nicht schaffen, es überall zu setzen, das funktioniert.
Beispiel: diese Informationen in timeslots
Tabelle:
id | start | end | weekdays | event_id | datespan
----+----------+----------+---------------+----------------------------------------------------------------
1 | 12:00:00 | 14:00:00 | {1,2,3,5,6,0} | 1 | ["2017-01-01 00:00:00+00","2017-02-01 00:00:00+00")
2 | 09:00:00 | 11:00:00 | {1,2,3,5,6,0} | 1 | [null, null)
3 | 15:00:00 | 17:00:00 | {1,2,3,5,6,0} | 1 | ["2017-02-01 00:00:00+00","2017-03-01 00:00:00+00")
Das Ergebnis der SELECT oben aufrufen, wenn eid=1
, fromdate='2017-02-02'
und todate='2017-02-03'
sollte wie folgt aussehen:
range
-----------------------------------------------------
["2017-02-02 09:00:00+00","2017-02-02 11:00:00+00")
["2017-02-02 15:00:00+00","2017-02-02 17:00:00+00")
["2017-02-03 09:00:00+00","2017-02-03 11:00:00+00")
["2017-02-03 15:00:00+00","2017-02-03 17:00:00+00")
Bitte ** [EDIT] ** Ihre Frage und fügen Sie einige Beispieldaten und die erwartete Ausgabe basierend auf diesen Daten. [** Formatierter Text **] (http://stackoverflow.com/help/formatting) bitte, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-auf-so-wenn-eine-Frage/285557 # 285557) –