2017-01-25 3 views
1

から00に...UTC + 01とT-SQLコンバートのDateTimeOffset:私は、このような、この入力(のDateTimeOffset)というシンプルなT-SQL SELECTクエリを実行するローカルアムステルダム日時

2015年1月1日00: 15:00.0000000 01:00

OR

2015年5月4日14:15:00.0000000 02:00

を...この出力(日時)として出てくる:

2015-01-01 01:15:00

OR

2015年5月4日午後4時15分〇〇秒

入力が1列で、出力も1列でなければなりません。

アイデア?

UPDATE 20170126

常に私が考えるほど簡単になることはありませんとして[OK]をクリックします。このクエリはより大きなクエリの一部です。これを次のように作成しました(下記参照)。入力列は「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] 

答えて

2

私はあなたの時間オフセットロジックがあなたの+/-値についてのご質問で約間違った方法を持っていると思いますが、あなたが出力として必要なデータの種類に応じて、カップルのオプションがあります。

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 

出力:

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 
関連する問題