Wenn Sie über die Zeitzone des lokalen Systems sprechen, habe ich dies in der Vergangenheit intensiv untersucht, und es ist nicht möglich ohne "unsichere" SQL CLR-Aufrufe oder nicht unterstützte xp_regread
Aufrufe zu lesen dies aus der Registrierung. Die allgemeine Empfehlung besteht darin, dies im Anwendungscode und nicht in der Datenbank zu tun.
Wenn Sie jedoch sagen, dass Sie einen Offset von -4:00
in Ihrem Eingabewert haben, und Sie das in einen Zeitzonennamen übersetzen möchten, habe ich Angst, dass überhaupt nicht möglich ist, weder in SQL, noch in Ihrem Anwendungscode. Der Grund ist, dass es viele Zeitzonen gibt, die denselben Offset haben. Sehen Sie sich beispielsweise this Wikipedia page an, in der alle Zonen aufgeführt sind, die -04:00
verwenden.
Auch wenn Sie den Umfang auf nur die Vereinigten Staaten beschränken, wird es in bestimmten Fällen aufgrund daylight saving time immer noch nicht funktionieren. Betrachten Sie beispielsweise den Zeitstempel 2013-11-03T01:00:00-05:00
. Ist das Eastern Standard Zeit? Oder zentrale Sommerzeit? Es gibt keine Möglichkeit zu sagen, denn in diesem Moment könnte es entweder sein.
In den USA (anders als in Europa) wechselt jede Zeitzone um 2 Uhr in ihrer eigenen lokalen Zeit. Es ist also wie eine Welle, die sich von Osten nach Westen bewegt. Während die US-Zeitzonen normalerweise eine Stunde voneinander entfernt sind, können sie während des Spring-Forward-Übergangs zwei Stunden voneinander entfernt sein, und während des Fallback-Übergangs können sie dieselbe exakte Ortszeit haben.
Ich fand die Informationen über USA Zonenübergänge erleuchtend. Ich stimme zu, dass die Anwendung diesen Prozess durchführen muss. Abhängig vom UI-Medium (Webbrowser vs. Desktop vs. Mobile) gibt es unterschiedliche Ansätze. –