Wir haben Daten in SQL Server 2008 mit mehreren Datumsspalten. Da das Datumsformat in SQL Server ein großer ganzzahliger Wert ist, d. H. Die Anzahl der Sekunden seit 1970, verwenden wir die Funktion DATEADD()
, um sie in das tatsächliche Datumsformat zu konvertieren. Aber das Problem, mit dem wir konfrontiert sind, ist, dass wir, wenn wir DATEADD() verwenden, Daten in der UTC-Zeitzone erhalten, während wir Daten in EST wollen. Ich habe versucht, einfach -4 HR von der Zeit zu verwenden, aber während NOV - MAR sind wir 1 HR voraus, weil der Unterschied 5 HR ist, wenn die Sommerzeit aus ist. Gibt es eine Funktion, die Sommerzeit berücksichtigt? Jede Hilfe wird geschätzt.UTC zu EST SQL Server 2008
Current Function -> DATEADD(s, columnName, '01/01/1970 00:00:00')
Grüße, Sahil
Es gibt nichts natives. Das ist unglaublich schwierig. Die Daten für die Sommerzeit haben sich im Laufe der Jahre geändert. Einige Staaten erkennen keine Sommerzeit. Nicht einmal der gesamte Bundesstaat Arizona erkennt die Sommerzeit. Und das ist nur die Komplikation in den USA. Sobald Sie diese Grenzen verlassen, wird es noch komplizierter. –
Es gibt ganze Bibliotheken, die strikt geschrieben sind, um mit Dates/Times umzugehen (* wie NodaTime, Momentjs, etc *), aber nicht für Sql Server, die ich kenne, da dies in der Anwendungsschicht und nicht der Persistenzschicht angesprochen wird. – Igor
Sie können eine Assembly importieren, die die TimeZoneInfo-Klasse umschließt und aus den Windows-Registrierungswerten für Zeitzonen-Offsets liest (genau so, wie Windows es tut). Diese Werte werden sporadisch aktualisiert, wenn Sie Windows-Updates anwenden. Zeitzoneninformationen ändern sich nicht nur auf einer geplanten (DST oder was auch immer) Basis, sondern ändern sich auch auf einer Ad-hoc-Basis, wie es Regionen und Länder für richtig halten. Ich würde eine getestete Bibliothek verwenden und diese in SQL-Server importieren. –