ActivityPointer などの CRM データベースのベース テーブルに直接クエリを実行して、期日、作成日などのデータを取得するカスタム aspx アプリケーションがあります。カスタム aspx ページでは、今日、過去 7 日間などの特定の日付範囲に基づいてデータをフィルター処理する必要があります。これは、CRM データベースに保存されているカスタム sproc を実行することによって行われます。ただし、ユーザーのタイムゾーンの問題が正しいデータを取得するという課題に直面しています。
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;
DECLARE @NoOfDay INT= 7 -- passed as param
SET @StartDate = DATEADD(day, DATEDIFF(day, @NoOfDays-1, GETDATE()), 0)
SET @EndDate = DATEADD(day, DATEDIFF(day, - 1, GETDATE()), 0)
これは、SQL インスタンスが実行されているマシンのタイムゾーンに基づいて、常に開始日と終了日を返します。ユーザーのタイムゾーン設定も考慮するように、開始日/終了日を設定する正しいアプローチは何でしょうか? カスタム aspx が別のアカウントを使用して sproc にアクセス/実行するため、dbo.fn_UTCToLocalTime() などの CRM 固有の関数を使用できないと思います。