SQL Server嵌套查询时间偏移量

问题描述 投票:-1回答:1

我试图根据时区偏移列中的时间。我想用这个:

SELECT 
    SERIAL_NUMBER,
    CONVERT(datetime, TIME_FROM)
      AT TIME ZONE ('US Eastern Standard Time')
FROM 
    tmp_TestZone

返回我需要的东西,但是我表中的每一行都有特定时区的记录,可以是任何时区。我要做的是用嵌套查询替换“美国东部标准时间”,该查询将为特定序列号提取正确的时区。时区存储在最后一列TIMEZONE_LU.TZ

我的表看起来像这样:

  ,[IP_ADDRESS]
  ,[NAME]
  ,[GROUP_NAME]
  ,[DEVICE_TYPE]
  ,[LINE_NAME]
  ,[DATE_FROM]
  ,[TIME_FROM]
  ,[TIME_TO]
  ,[fw]
  ,[bw]
  ,[SITE_NAME]
  ,[TZ]

我试着像这样构建查询:

SELECT
    SERIAL_NUMBER,
    CONVERT(datetime, TIME_FROM)
        AT TIME ZONE (SELECT TZ
                      FROM tmp_TestZone) NEW_TIME
FROM 
    tmp_TestZone

但我收到一个错误:

消息512,级别16,状态1,行2 子查询返回的值超过1。当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做。

我该如何解决?

建议:

SELECT
SERIAL_NUMBER,
CONVERT(datetime, TIME_FROM)
    AT TIME ZONE (SELECT TZ
                  FROM tmp_TestZone) NEW_TIME
FROM 
tmp_TestZone

但是我会发现我的时区没有标准化。我打算尝试使用

  SELECT SERIAL_NUMBER,
  SWITCHOFFSET(TIME_FROM, '-05:00')
   FROM tmp_TestZone2

你能帮我从上面的代码中替换'-05:00',所以ti读取UTC_offset列的值,其格式为'-05:00'

非常感谢

好的,这是表:

SELECT [SERIAL_NUMBER]
  ,[IP_ADDRESS]
  ,[NAME]
  ,[GROUP_NAME]
  ,[DEVICE_TYPE]
  ,[LINE_NAME]
  ,[DATE_FROM]
  ,[TIME_FROM]
  ,[TIME_TO]
  ,[fw]
  ,[bw]
  ,[SITE_NAME]
  ,[TZ]
  ,[CC]
  ,[UTC_offset]
  ,[UTC_DST_offset]

来自[VHA]。[dbo]。[tmp_TestZone2]

以下是该表的数据:enter image description here

我有需要为UTC_Offset值偏移的TIME_FROM和TIME_TO列。因此,对于图片中的实例,TIME_FROM(10:10:00)和TIME_TO(11:00:00)应该偏移-7:00,依此类推,对于每一行,TIME_FROM和TIME_TO应该偏移为什么值是在UTC_Offset列中。

sql-server sql-server-2016 timezone-offset
1个回答
1
投票

试试这样吧

SELECT
    SERIAL_NUMBER,
    CONVERT(datetime, TIME_FROM)
        AT TIME ZONE temp.tz
FROM 
    tmp_TestZone AS temp;

这可能对你有所帮助。

编辑问题的答案:

如果我正确理解了您的问题,请尝试以下查询从结果中删除您的时间偏移...

SELECT SERIAL_NUMBER,
CONVERT(varchar(19),SWITCHOFFSET(TIME_FROM, '-05:00'),120) AS Result_date
FROM tmp_TestZone2

要么

SELECT SERIAL_NUMBER,
CONVERT(varchar(19),SWITCHOFFSET(TIME_FROM, UTC_offset),120) AS Result_date
FROM tmp_TestZone2

根据你的varchar(19)(如DATETIME CONVERSION CODE)保持120长度。

© www.soinside.com 2019 - 2024. All rights reserved.