Azure SQL Преобразование «Отображаемое имя часового пояса» в «Идентификатор часового пояса»
Я работаю с последней версией Azure SQL. У меня есть ряд файлов, и я хочу преобразовать их в файлы. Я знаю, что SQL-сервер содержит как отображаемое имя, так и идентификатор.
sys.time_zone_info
есть все, но такие команды, как
CURRENT_TIMEZONE ()
выход . Я надеюсь на простую функцию, которая принимает строку
Time zone display name
и возвращает
Time zone ID
это имя соответствует, но я не могу найти на это ссылки. И я не могу найти таблицу, в которой действительно хранится отображение.
3 ответа
В
sys.time_zone_info
, имя - это идентификатор. Не самый лучший для нормализации.
Если вы используете это, чтобы иметь собственный внутренний список часовых поясов для своего приложения, то я думаю, что Джозеф Сюй знает правильный ответ.
Если вы используете это для запросов к Azure SQL, ожидающих локализации часового пояса, имейте в виду, что, согласно документации Azure SQL, база данных работает в, и CURRENT_TIMEZONE_ID() вернет
UTC
всегда.
Я думаю, что мы можем создать таблицу для хранения информации с двумя столбцами и. Затем создайте хранимую процедуру для запроса, введите
Time zone display name
возвращаться
Time zone ID
.
Насколько я знаю, SQL Azure не предоставляет таблицы для преобразования из
Time Zone ID
к
Time Zone display name
. Я думаю, что нет никакой таблицы с этой информацией, потому что
sys.time_zone_info
системное представление получает информацию из внутренних функций, а не из других таблиц, которые вы можете проверить.
Вы можете использовать некоторые таблицы и функции из T-SQL Toolbox или создавать свои собственные таблицы.
Использование пользовательской таблицы
Вы можете получить (и/или изменить) код для создания таблиц из TSqlToolbox. Этот код создает таблицу
DateTimeUtil.Timezone
с желаемой информацией.
Я сделал пример, который вы можете попробовать в db<>fiddle
SELECT identifier
FROM [TimeZone]
WHERE [TimeZone].[DisplayName] = '(UTC-08: 00) Baja California'
| Identifier |
|----------------------------------|
| Pacific Standard Time (Mexico) |