Мне действительно нужна помощь специалиста по SQL.Я делаю хранимую процедуру, и все хорошо и модно, пока я не отобразить ее.Все, что хранится в базе данных, хранится в UTC, однако мы получаем смещение по GMT для браузеров, и именно так мы определяем предопределенный диапазон времени.Проблема в том, что я использую дату для отображения, однако из-за смещения по Гринвичу отображаемая дата не является правильной, и это смущает людей.Я отображаю ее как короткую дату, и вот часть, где она преобразуется:
SELECT
BundleEvent.BundleId,
CAST(BundleEvent.EventDate AS DATE)
FROM dbo.BundleEvent WITH (NOLOCK)
JOIN dbo.BundleUser WITH (NOLOCK)
ON BundleEvent.BundleId = BundleUser.BundleId
WHERE BundleEvent.EventDate >= @StartTimeGmt AND BundleEvent.EventDate <= @EndTimeGmt
AND BundleUser.UserId = CASE WHEN @UserId IS NULL THEN BundleUser.UserId ELSE @UserId END
GROUP BY
BundleEvent.BundleId,
CAST(BundleEvent.EventDate AS DATE)
Поскольку я группирую ее как короткую дату, я теряю способность ее преобразовать.Поэтому, когда люди выбирают диапазон Сегодня, они могут получить дату от сегодняшнего и вчерашнего дня из-за своего смещения по Гринвичу.Кто-нибудь имел эту проблему раньше, и если да, то какое решение вы использовали?Поскольку я работаю с хранимой процедурой, я очень ограничен.Я не знаю, как это исправить.