Преобразовать метку времени в местное время T- SQL - PullRequest
0 голосов
/ 01 марта 2020

Я пишу запрос в t- sql, чтобы преобразовать метку времени в местное время, и не знаю, как это сделать правильно, основываясь на следующих столбцах: time: '29 / 02/2020 12: 02: 05 ' и часовой пояс: ' Европа / Париж '

Пример Функция результата ('29 / 02/2020 12:02:05', 'Париж') должна вернуться '29 / 02/2020 13:02:05 'соответствующее представление внутренней метки времени.

Спасибо

1 Ответ

1 голос
/ 01 марта 2020

Если вы используете SQL Server 2016 или новее, вы можете использовать at time zone.

Чтобы повернуть дату * ut2410 в заданный часовой пояс, вы можете сделать :

select t.ts at time zone 'utc' at time zone t.tz from t

Где ts - это столбец, содержащий datetime, а tz - действительный часовой пояс места назначения (список поддерживаемых часовых поясов можно найти в sys.time_zone_info ).

Демонстрация на DB Fiddle :

with t as (
    select 
        cast('2020-02-29 12:02:05' as datetime) ts,
        'Central European Standard Time' tz
)
select ts, tz, ts at time zone 'utc' at time zone tz ts_in_paris from t
GO
ts                      | tz                             | ts_in_paris                
:---------------------- | :----------------------------- | :--------------------------
2020-02-29 12:02:05.000 | Central European Standard Time | 2020-02-29 13:02:05.0000000
...