R. *_*ven 2 t-sql datetime datetimeoffset
我想运行一个简单的 T-SQL SELECT 查询,以便此输入 (datetimeoffset)...
2015-01-01 00:15:00.0000000 +01:00
或者
2015-05-04 14:15:00.0000000 +02:00
...输出如下(日期时间):
2015-01-01 01:15:00
或者
2015-05-04 16:15:00
输入是一列,输出也应该是一列。
有任何想法吗?
更新20170126
好吧,一如既往,它从来没有我想象的那么容易。该查询是一个更大查询的一部分,我现在将其制定如下(见下文),输入列名为“TimeStamp”,输出列名为“Tijd”。但这不起作用,因为它似乎无法识别变量声明中的 [TimeStamp] 。我缺少什么?
DECLARE @dt datetimeoffset = (SELECT CONVERT(datetimeoffset, [TimeStamp]))
SELECT @dt as Original
,CONVERT(datetime2,@dt,1) AS Tijd
,[Id]
,[EanCode]
,[DataAccessPointId]
,[DataSource]
,[ElectricityUsageNormalkWh] AS Piek
,[ElectricityUsageLowkWh] AS Dal
,[DateAltKey] = CONVERT(int, CONVERT(varchar(8), [TimeStamp], 112))
,[TimeAltKey] = DATEPART(hh,[TimeStamp]) * 10000 + DATEPART(mi,[TimeStamp]) * 100 + DATEPART(ss,[TimeStamp])
FROM [dbo].[ElectricityTelemetryData]
Run Code Online (Sandbox Code Playgroud)
我认为在关于 +/- 值的问题中,您的时间偏移逻辑是错误的,但是根据您想要作为输出的数据类型,您有几个选项:
declare @dt datetimeoffset = (select convert(datetimeoffset,'2015-01-01 00:15:00.0000000 +01:00'))
select @dt as Original
,convert(datetime2,@dt,1) as Converted
,switchoffset(@dt,'+00:00') as Switched
Run Code Online (Sandbox Code Playgroud)
输出:
Original | Converted | Switched
2015-01-01 00:15:00.0000000 +01:00 | 2014-12-31 23:15:00.0000000 | 2014-12-31 23:15:00.0000000 +00:00
Run Code Online (Sandbox Code Playgroud)