Я пытаюсь сместить время в столбце на основе часового пояса.Я пытаюсь использовать это:
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' из приведенного выше кода, чтобы он считывал значения из столбца 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]
И вот данные этой таблицы:
У меня есть столбцы TIME_FROM и TIME_TO, которые должны быть смещены для значений UTC_Offset.Таким образом, для экземпляра на рисунке TIME_FROM (10:10:00) и TIME_TO (11:00:00) должны быть смещены на -7: 00 и т. Д. Для каждой строки TIME_FROM и TIME_TO должны быть смещены для любого значенияв столбце UTC_Offset.