1

異なるタイムゾーンに対応するために、特定の時間帯に対して3つのクエリを調整する必要があります。これらのクエリは、前日、日付範囲、および当日からトランザクションデータを取得します。サーバー時間はGMTであり、クエリは現在、GMTサーバー時間に基づいてトランザクションデータをプルするために正常に機能します。1日はもちろんグリニッジ標準時00:00から始まります。これは、サーバー時間に基づく暦日です。ただし、1日を00:00GMTではなく12:00GMTに開始するクエリが必要です。クエリは次のとおりです(データ型はTransactionDateフィールドの日時です)。

クエリ1このクエリは、特定のクライアントのトランザクションの概要を前日から取得します。クエリのWHERE句は次のとおりです。

WHERE TransactionDate >= DateAdd(DD, DateDiff(DD, 0, GETDATE())-1, 0) AND TransactionDate < DateAdd(DD, DateDiff(DD, 0, GETDATE()), 0)

クエリ2このクエリには2つの日付パラメータがあり、提供された日付範囲に対して同じトランザクションデータを提供します。クエリのWHERE句は次のとおりです。

WHERE TransactionDate BETWEEN @StartDateParam AND @EndDateParam

クエリ3最後のクエリは、当日の特定のクライアントのトランザクションの概要を取得します。クエリのWHERE句は次のとおりです。

WHERE TransactionDate >= CONVERT(CHAR(10),GETDATE(),120)

繰り返しますが、これらのクエリは現在のGMTサーバー時間で正常に機能します。誰かが、これらの各クエリの日時フィールドの時間要素を調整して、時間帯が現在の00:00GMTの開始時刻ではなく15:00GMTに開始するようにする正しい方法を教えてもらえますか。

よろしくお願いします。

4

1 に答える 1

1

(コメントから書き直しました。)

開始部分または2番目のバージョンのいずれかでクエリを実行することをお勧めします

StartDateParam目的のタイムゾーンに適切な値を渡すようにしてEndDateParamください。クエリですべての変換を行う必要はありませんか?

また、「between」にはエンドポイントが含まれていることに注意してください...本当に言いたいDATETIMEフィールドのようなものにとっては苦痛ですstart <= datetime < end...

于 2012-08-08T18:15:24.983 に答える