#sql #azure-sql-database
Вопрос:
У меня есть таблица в базе данных Azure SQL, как показано ниже
Мне нужно знать, какой сегодня день, и сравнить его с полем «День заказа». Я думал, что мог бы сделать что-то вроде ниже в предложении where
SUBSTRING(DATENAME(weekday,GETDATE()), 0, 4)
С этим есть проблема, когда я добавил это в поле выбора
Хотя я запускаю его сегодня, когда я все еще нахожусь в часовом поясе CST, здесь все еще понедельник, а база данных Azure находится в восточной части США, но она возвращается во вторник.
Комментарии:
1. Я предполагаю, что он возвращается к UTC. Не могли бы вы вычесть 5 часов из отметки current_timestamp и завершить до настоящего времени? Или это выглядит как хорошая запись об этом blog.greglow.com/2020/03/12/…
Ответ №1:
База данных SQL Azure всегда следует часовому поясу UTC.
Используйте ЧАСОВОЙ ПОЯС AT, чтобы преобразовать его в CST или другой часовой пояс, отличный от UTC.
Используйте приведенный ниже синтаксис, чтобы получить информацию о дне в часовом поясе CST, используя ЧАСОВОЙ ПОЯС AT
SUBSTRING(DATENAME(weekday,getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Central Standard Time'), 0, 4)
Вы также можете обратиться к представлению sys. time_zone_info, чтобы проверить текущую информацию о смещении utc.
select * from sys.time_zone_info