übereinstimmen Zum Beispiel habe ich in der Datenbank erlaubt Bereiche - (08: 00-12: 00), (12: 00-15: 00) und angefordert Bereich, den ich testen möchte - (09: 00-14: 00). Gibt es eine Möglichkeit zu verstehen, dass mein Testbereich in den erlaubten Bereich in der Datenbank eingeschlossen ist? Es kann in noch mehr Teilen aufgeteilt werden, ich möchte nur wissen, ob mein Bereich vollständig in die Liste der Zeitbereiche in der Datenbank passt.Gibt es eine Möglichkeit, mehrere Datumsbereiche für die Aufnahme in mehrere Bereiche in postgresql
Gibt es eine Möglichkeit, mehrere Datumsbereiche für die Aufnahme in mehrere Bereiche in postgresql
Antwort
Sie stellen keine Tabellenstruktur bereit, daher habe ich keine Ahnung vom Datentyp. diese sind Texte Nehmen wir an:
t=# select '(8:00, 12:30)' a,'(12:00, 15:00)' b,'(09:00, 14:00)' c;
a | b | c
---------------+----------------+----------------
(8:00, 12:30) | (12:00, 15:00) | (09:00, 14:00)
(1 row)
dann, wie Sie es tun können:
t=# \x
Expanded display is on.
t=# with d(a,b,c) as (values('(8:00, 12:30)','(12:00, 15:00)','(09:00, 14:00)'))
, w as (select '2017-01-01 ' h)
, timerange as (
select
tsrange(concat(w.h,split_part(substr(a,2),',',1))::timestamp,concat(w.h,split_part(a,',',2))::timestamp) ta
, tsrange(concat(w.h,split_part(substr(b,2),',',1))::timestamp,concat(w.h,split_part(b,',',2))::timestamp) tb
, tsrange(concat(w.h,split_part(substr(c,2),',',1))::timestamp,concat(w.h,split_part(c,',',2))::timestamp) tc
from w
join d on true
)
select *, ta + tb glued, tc <@ ta + tb fits from timerange;
-[ RECORD 1 ]----------------------------------------
ta | ["2017-01-01 08:00:00","2017-01-01 12:30:00")
tb | ["2017-01-01 12:00:00","2017-01-01 15:00:00")
tc | ["2017-01-01 09:00:00","2017-01-01 14:00:00")
glued | ["2017-01-01 08:00:00","2017-01-01 15:00:00")
fits | t
müssen Sie zuerst auf „werfen“ Ihre Zeit zeitzustempeln, da es keine Timerange in Postgres ist, so nehmen wir Gleicher Tag für alle Zeiten (w.h = 2017-01-01
) und konvertieren a, b, c zu ta, tb, tc mit Standard inklusive Klammern (was völlig unserem Fall entspricht).
dann union
https://www.postgresql.org/docs/current/static/functions-range.html#RANGE-FUNCTIONS-TABLE Operator verwenden, um "verleimt" interval
schließlich prüfen, ob der Bereich, der durch die größeren mit <@
Operator
"* da es in postgres keinen Zeitbereich gibt *" aber man kann sehr einfach einen erstellen: 'create type timerange als range (subtype = time);' –
@a_horse_with_no_name danke - Ich werde die Antwort mit der neueren Version aktualisieren, wie du es dir vorschreibst Kenntnis der Tabellenstruktur und einer klaren Stichprobe aus OP –
- 1. Gibt es eine Möglichkeit, mehrere Hash-Schlüssel in DynamoDB abzufragen?
- 2. Gibt es eine Möglichkeit, mehrere Ersetzungen in C# nacheinander durchzuführen?
- 3. Erste Datumsbereiche für mehrere Datetime-Paare
- 4. Gibt es eine Möglichkeit, mehrere Wertkonverter in XAML zu verketten?
- 5. Gibt es eine Möglichkeit, mehrere Suchen in (g) Vim hervorzuheben?
- 6. Gibt es eine Möglichkeit, mehrere Sammlungen gleichzeitig in Mongodb
- 7. Gibt es eine Möglichkeit, mehrere xlabels gleichzeitig in Matplotlib zuzuweisen?
- 8. Gibt es eine einfache Möglichkeit, mehrere Kriterien in VBA auszuwählen?
- 9. Gibt es eine Möglichkeit, mehrere Sensordaten in Android
- 10. Gibt es eine Möglichkeit, mehrere Ebenen in Processing zu haben?
- 11. Hive Fensterfunktionen über mehrere Datumsbereiche
- 12. mehrere Listen passende mehrere Bereiche in Python
- 13. Gibt es eine effizientere Möglichkeit, eine Schleife durch mehrere Listen
- 14. Mehrere Datumsbereiche in SQL Abfrage auswählen
- 15. Gibt es eine Möglichkeit, die Melt-Funktion in Python für mehrere Spalten zu verwenden?
- 16. Gibt es eine kurze Möglichkeit, mehrere Elemente hinzuzufügen
- 17. Eine Möglichkeit, für mehrere Websites
- 18. postgresql Funktion gibt mehrere Spalten
- 19. Gibt es eine Möglichkeit, mehrere Felder mit onclick-Methode
- 20. Gibt es eine Möglichkeit, Fabric Ergebnisse über mehrere Hosts zusammenzufassen?
- 21. Gibt es eine Möglichkeit, eine Erweiterungsmethode zu schreiben, die für mehrere Typen gilt?
- 22. Gibt es eine schnellere Möglichkeit, mehrere untergeordnete Verzeichnisse zu erstellen?
- 23. Gibt es eine Möglichkeit, mehrere TextView mit ArrayAdapter zu aktualisieren?
- 24. Gibt es eine Möglichkeit, Bulk einfügen in Postgresql von node.js?
- 25. Gibt es eine Möglichkeit, mehrere Ergebnisse mit einer Unterabfrage zurückzugeben?
- 26. Gibt es eine effizientere Möglichkeit, mehrere Variablen im Batch zuzuweisen?
- 27. Index mehrere, nicht benachbarte Bereiche in numpy
- 28. Gibt es eine Möglichkeit, eine Variable zu deklarieren, die mehrere Schnittstellen in .Net implementiert?
- 29. Gibt es eine Möglichkeit, mehrere FileFilter zu kombinieren?
- 30. Gibt es eine Möglichkeit, mehrere Variablen gleichzeitig mit Dlang zuzuweisen?
mein Testbereich sein kann enthalten ist (09: 00-10: 00) , (10:00, 14:00) –
Bitte ** [EDIT] ** Ihre Frage und fügen Sie einige Beispieldaten und die erwartete Ausgabe basierend auf diesen Daten hinzu. [** Formatierter Text **] (http://stackoverflow.com/help/formatting) bitte, [** keine Screenshots **] (http://meta.stackoverflow.com/questions/285551/why-may -I-nicht-Upload-Bilder-of-Code-auf-so-wenn-eine Frage zu stellen/285557 # 285557). ** [Bearbeiten] ** Ihre Frage - tun ** nicht ** Postleitzahl oder zusätzliche Informationen in Kommentaren. –