Deb*_*ahK 7 sql t-sql datetimeoffset
我的应用程序需要收集全球所有地点的"星期二"购买,其中"Tueday"是该地点的星期二(不论时区).如果用户需要在下周重新运行报告,我还需要获得"上周二"的数据.我们所有的数据都使用DateTimeOffset存储.
所以9/4/12 00:00:00 -7到9/4/12 23:59:59 -7必须在9月4日12:00 00:00:00 +11到9/4/12 23:59:当我执行WHERE子句时59 +11.
我无法在WHERE子句中转换为UTC,因为这将获取伦敦"星期二"的数据(取决于DST),而不是位置的星期二.
我尝试从DateTimeOffset转换为DateTime,但似乎转换为UTC.(在我的测试中,通过9/1/12至9/30/12获取了8/31/12数据.)
用TSQL做这样的事情有诀窍吗?
谢谢!
恕我直言
日期时间偏移 = 日期时间+偏移(来自 UTC)
因此,您的数据已经代表客户的本地日期和时间。只需将其转换为 DateTime,您将获得客户端的本地日期和时间。
但如果您想将偏移量添加到日期时间并想要得到结果日期时间,那么
DECLARE @PurchaseDate DATETIMEOFFSET(7) = CAST('2007-05-08 12:30:29.1234567 +5:00' AS datetimeoffset(7))
SELECT CAST(SWITCHOFFSET (@PurchaseDate , '+00:00') AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
请查看此博客以获取更多信息。
http://blogs.msdn.com/b/bartd/archive/2009/03/31/the-death-of-datetime.aspx