Moja aplikacja bazy danych zostanie wdrożona w wielu witrynach w różnych strefach czasowych.Określanie przesunięcia strefy czasowej w T-SQL
Potrzebuję funkcji T-SQL, która określi znacznik UTC o północy 1 stycznia bieżącego roku dla obliczeń YTD. Wszystkie dane są przechowywane w datownikach UTC.
Na przykład, Chicago jest UTC-6 z Daylight Savings Time (DST), funkcja musi wrócić "2008-01-01 06:00:00", jeśli zostanie uruchomiona w dowolnym czasie w 2008 roku w Chicago. Jeśli zostanie uruchomiony w Nowym Jorku (GMT-5 + DST) w przyszłym roku, musi wrócić "2009-01-01 05:00:00".
Mogę uzyskać bieżący rok z ROKU (GETDATE()). Myślałem, że mogę zrobić DATEDIFF między GETDATE() i GETUTCDATE(), aby określić offset, ale wynik zależy od tego, czy zapytanie jest uruchamiane podczas DST, czy nie. Nie znam żadnych wbudowanych funkcji T-SQL do określania przesunięcia lub czy aktualny czas jest czasem letnim, czy nie?
Czy ktoś ma rozwiązanie tego problemu w T-SQL? Mogę to zakodować na twardym dysku lub zapisać w tabeli, ale wolałbym tego nie robić. Przypuszczam, że jest to idealna sytuacja do korzystania z integracji CLR w SQL Server 2005. Zastanawiam się tylko, czy istnieje rozwiązanie T-SQL, którego nie jestem świadomy?
Dzięki Eric. Zaimplementowałem rozwiązanie oparte na tabelach, które zasugerowałeś w przeszłości. Zastanawiałem się tylko, czy coś, co przeoczyłem, ułatwiłoby mi życie. –