Предложение Where в операторе Select с функцией подстроки

#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

введите описание изображения здесь