2017-05-18 4 views
1

条件のいずれかを( "dev_lastremarketingtime"、ConditionOperator.OlderThanXHours、1)に設定してQueryExpressionを作成しました。 目的はdev_lastremarketingtimeの値の1時間後の複数のレコードを取得することです。MSCRM OlderThanXHoursと現在の時刻

テーブルにこの基準を満たすレコードがありますが、返されません。私がレコード(今回は特定のレコードのRetrieveMultiple)を調べると、比較に使用された時間は一貫していないようです。

たとえば、問題の口座レコードを表示すると、アカウントフォームに表示されるdev_lastremarketingtimeの値は5/17/2017 8:57 PMです。内部は時刻5/18/2017 12:57:27 AMです。テスト時の壁時計は、2011年5月17日10:38:11 PM(または2011年5月18日2:38:11 UTC)を示します。このレコードはクエリによって返されているはずです(現在の時刻はdev_lastremarketingtimeの値の1時間以上前です)

私は数時間待ってから再度アプリケーションを実行すると、予想されるレコードが取得されます。 したがって、ConditionOperator.OlderThanXHoursを含むクエリ式は、現在のEastern Daylight時間とレコードのUTC時間を比較しているようです。

どのようにしてこのタイムゾーンを比較することができますか(どちらが問題なのでしょうか?)

(私の個人的なオプションは、代わりにOlderThanXHours演算子を使用しての東部時間

答えて

1

の設定を含め、多分にフィルタリングするためにDateTime値のコントロールを提供する、「未満」を使用してみてください。

この方法あなたはこのように、UTC時刻マイナス時間を使うことができます。

var qe = new QueryExpression("myentity"); 
qe.Criteria.AddCondition("dev_lastremarketingtime", ConditionOperator.LessThan, DateTime.UtcNow.AddHours(-1)); 
+0

を、これは私がやってしまったことですし、私はそれがうまくいくと思うOlderTHanXHoursが機能しなかった理由を、私はまだ理解していない感謝。 –

関連する問題