У меня проблема с тем, как добавить смещение в 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 |
+-----------+-----------+---------------------+-------------------------+--------+---------------------+
Что я сделал до сих пор:
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
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.