Veritabanı uygulamam farklı saat dilimlerinde birden çok siteye dağıtılacak.T-SQL'de Saat Dilimi Kaybını Belirle
YTD hesaplamaları için bu yılın 1 Ocak tarihli gece yarısı UTC zaman damgasını belirleyecek bir T-SQL işlevine ihtiyacım var. Tüm veriler UTC zaman damgalarında saklanır. Örneğin, Chicago, Günışığı Tasarruf Zamanı (DST) ile UTC-6'dır, Chicago'da 2008'de herhangi bir zamanda çalıştırılacaksa, fonksiyonun '2008-01-01 06:00:00' dönmesi gerekir. Gelecek yıl New York'ta (GMT-5 + DST) koşuyorsanız, '2009-01-01 05:00:00' dönmelidir.
Geçerli yılı YEAR (GETDATE()) 'dan alabilirim. Ofsetin belirlenmesi için GETDATE() ve GETUTCDATE() arasında bir DATEDIFF yapabileceğimi düşündüm, ancak sonucun DST sırasında çalıştırılıp çalıştırılmadığına bağlı olarak değişir. Ofsetin belirlenmesinde veya mevcut zamanın DST olup olmadığını anlamak için yerleşik T-SQL fonksiyonlarını bilmiyorum.
Bu sorunun T-SQL'de bir çözümü var mı? Bunu kodlayabilir veya bir masada saklayabilirim ama yapmamayı tercih ederim. Bu SQL Server 2005'te CLR Entegrasyonu kullanmak için mükemmel bir durum olduğunu varsayalım. Sadece habersiz bir T-SQL çözümü olup olmadığını merak ediyorum?
Teşekkürler Eric. Geçmişte önerdiğiniz gibi masa tabanlı bir çözüm uyguladık. Sadece hayatımı kolaylaştırmak için kaçırdığım bir şey olup olmadığını merak ediyordum. –