Lassen Sie uns dieses Problem als eine Scheduling-Anwendung einrahmen. Benutzer geben eine Mindestzeit in ihrer Zeitzone ("8am" in "America/New_York") an, nach der sie bereit sind, Termine zu nehmen. (Wir haben auch eine ähnliche Beschränkung für die maximale Zeit)Ermitteln, ob ein UTC-Zeitstempel innerhalb eines Zeitbereichs in einer Zeitzone liegt?
Angesichts einer eingehenden Terminanfrage (sagen wir für 2016-09-07 03:00:00
in UTC-Zeit), müssen wir ermitteln, welche Benutzer den Termin nehmen können.
Wie können wir feststellen, ob ein UTC-Zeitstempel zwischen zwei Zeitzonen-angepassten Zeiten liegt?
Mein Ansatz war, den eingehenden Zeitstempel des Benutzers Zeitzone zu konvertieren, den Zeitanteil zu extrahieren und zu dem Zeitdruck vergleichen:
SELECT * FROM users u WHERE
('2016-09-07 03:00:00' AT TIME ZONE u.timezone)::time >= u.earliest_start_time AND
('2016-09-07 03:00:00' AT TIME ZONE u.timezone)::time <= u.latest_stop_time
(earliest_start_time
und latest_stop_time
von time without time zone
Typ sind; timezone
ist ein Olson TZ String)
Es gibt alle Arten von seltsamen Verhalten als Zeitzone Offsets Ursachen Tage zu überrollen und ich bin nur allgemein sehr verwirrt und verschwommen über dies.
Sie können nicht unbedingt, weil ein lokaler Zeitstempel mehrdeutig sein kann. Angenommen, Ihr Benutzer gibt Ihnen einen lokalen Bereich mit der Endung 2016-11-06T01: 30 New Yorker Zeit. Jetzt ist 2016-11-05T21: 45 davor oder danach? Es ist nach dem * ersten * Vorfall von 1:30 Uhr in New York am 6. November, aber es ist vor dem * zweiten * Vorkommen von 1:30 Uhr morgens ... Grundsätzlich müssen Sie wissen, ob die "1:30 Uhr" vom Benutzer gegeben wird ist das erste oder zweite Vorkommen ... und bewältigen die andere Situation, wo der Benutzer 1:30 Uhr sagt, aber das wurde übersprungen ... –
Was ist der Typ von 'früheste_Start_Zeit' und' neueste_Stopp_Zeit'? Enthält es Datumsinformationen oder ist es nur eine Tageszeit? – redneb
Ah. Ich denke ich verstehe. In Anbetracht der Tatsache, dass ich eine minimale und maximale Einschränkung habe, müsste ich irgendwie in der Abfrage die Annahme kodieren, dass ich meine, dass die Bandbreite die Nacht durchläuft? –