【发布时间】:2016-04-12 01:21:28
【问题描述】:
在 SQL Server (2008+) 中为DATETIMEOFFSET 字段获取本地时间 日期名称的最佳方法是什么? DATENAME(DW, DATEADD(mi, DATEPART(tz, @dt), @dt)) 是一种可接受的方法吗?它似乎有效,但有更好的方法吗?
-- this is a Tuesday in London but still a Monday in PST
declare @dt datetimeoffset = '2016-4-12 01:14:00.00000 -08:00'
select TOP(1)
DATENAME(DW, @dt),
DATENAME(DW, DATEADD(mi, DATEPART(tz, @dt), @dt)),
DATENAME(DW, CAST(@dt AS DATETIME))
结果
Tuesday, Monday, Tuesday
正确答案是Monday。
【问题讨论】:
-
datetimeoffset
'2016-4-12 01:14:00.00000 -08:00'的值在太平洋标准时间表示'2016-4-12 01:14',在伦敦表示'2016-04-12 08:14',两者都应该是星期二 -
@Eric 谢谢,
DateTimeOffset的 MSDN 文档在这一点上特别含糊。
标签: sql-server datetimeoffset dateadd datepart