У меня проблема с тем, как добавить смещение в EventDateTime. Есть ли способ сделать это? Я бы преобразовал его в десятичное число, но не могу, потому что 5:30 - это не 5,3 часа, это 5 часов 30 минут.

Данные показаны ниже с ожидаемым результатом. Пожалуйста, помогите, если возможно.

Пример данных:

+-----------+-----------+---------------------+-------------------------+--------+
| EventDate | EventTime |    EventDateTime    |        TimeZone         | Offset |
+-----------+-----------+---------------------+-------------------------+--------+
| 10/1/2020 | 5:00 PM   | 2020-10-01 5:00 PM  | UTC +5:30 IST New Delhi | +5:30  |
| 10/1/2020 | 8:00 PM   | 2020-10-01 8:00 PM  | UTC +5:30 IST New Delhi | +5:30  |
| 10/2/2020 | 10:00 AM  | 2020-10-02 10:00 AM | UTC -4 EDT New York     | -4     |
| 10/2/2020 | 10:00 AM  | 2020-10-02 10:00 AM | UTC -7 PDT Los Angeles  | -7     |
| 10/2/2020 | 2:00 PM   | 2020-10-02 2:00 PM  | UTC +1 BST London       | 1      |
| 10/2/2020 | 3:00 PM   | 2020-10-02 3:00 PM  | UTC -7 PDT Los Angeles  | -7     |
| 10/2/2020 | 8:00 AM   | 2020-10-02 8:00 AM  | UTC -7 PDT Los Angeles  | -7     |
| 10/5/2020 | 10:00 AM  | 2020-10-05 10:00 AM | UTC +5:30 IST New Delhi | +5:30  |
| 10/5/2020 | 10:00 AM  | 2020-10-05 10:00 AM | UTC -5 CDT Chicago      | -5     |
+-----------+-----------+---------------------+-------------------------+--------+

Ожидаемый результат:

+-----------+-----------+---------------------+-------------------------+--------+---------------------+
| EventDate | EventTime |    EventDateTime    |        TimeZone         | Offset |     UTCDateTime     |
+-----------+-----------+---------------------+-------------------------+--------+---------------------+
| 10/1/2020 | 5:00 PM   | 2020-10-01 5:00 PM  | UTC +5:30 IST New Delhi | +5:30  | 2020-10-01 10:30 PM |
| 10/1/2020 | 8:00 PM   | 2020-10-01 8:00 PM  | UTC +5:30 IST New Delhi | +5:30  | 2020-10-02 1:30 AM  |
| 10/2/2020 | 10:00 AM  | 2020-10-02 10:00 AM | UTC -4 EDT New York     | -4     | 2020-10-02 6:00 AM  |
| 10/2/2020 | 10:00 AM  | 2020-10-02 10:00 AM | UTC -7 PDT Los Angeles  | -7     | 2020-10-02 3:00 AM  |
| 10/2/2020 | 2:00 PM   | 2020-10-02 2:00 PM  | UTC +1 BST London       | 1      | 2020-10-02 3:00 PM  |
| 10/2/2020 | 3:00 PM   | 2020-10-02 3:00 PM  | UTC -7 PDT Los Angeles  | -7     | 2020-10-02 8:00 AM  |
| 10/2/2020 | 8:00 AM   | 2020-10-02 8:00 AM  | UTC -7 PDT Los Angeles  | -7     | 2020-10-02 1:00 AM  |
| 10/5/2020 | 10:00 AM  | 2020-10-05 10:00 AM | UTC +5:30 IST New Delhi | +5:30  | 2020-10-05 3:30 PM  |
| 10/5/2020 | 10:00 AM  | 2020-10-05 10:00 AM | UTC -5 CDT Chicago      | -5     | 2020-10-05 5:00 AM  |
+-----------+-----------+---------------------+-------------------------+--------+---------------------+

Что я сделал до сих пор:

-4
Dee 11 Фев 2021 в 21:47

1 ответ

Лучший ответ

Не совсем красиво, но работает ...

DECLARE @eventDateTime VARCHAR(50), @offset varchar(10)

SET @eventDateTime = '2020-09-30 5:00AM'
SET @offset = '-5:30'

SELECT CASE WHEN @offset LIKE '-%' THEN CONVERT(DATETIME,@eventDateTime) - REPLACE(@offset,'-','')
        ELSE CONVERT(DATETIME,@eventDateTime) + REPLACE(@offset,'+','')
        END
1
WAMLeslie 11 Фев 2021 в 20:18
66160931