自分のwin10/ ver6.5環境では「英語ロケール」、「日本語ロケール」、「Textで日時指定」、「DateTimeで日時指定」を組み合わせて、
4つのパターンどれも成功に実行しました。
英語のロケールで実行すると、「Get Received Item(Basic)」で生成してくれたSQL構文は下記のようになります。
@SQL=urn:schemas:httpmail:datereceived>='20 July 2019 00:00' AND urn:schemas:httpmail:datereceived<='22 July 2019 00:00'
日本語のロケールで実行すると、「Get Received Item(Basic)」で生成してくれたSQL構文は下記のようになります。
@SQL=urn:schemas:httpmail:datereceived>='20 7月 2019 00:00' AND urn:schemas:httpmail:datereceived<='22 7月 2019 00:00'
ーーここ以下Blue Prism のログインする時のロケールとは関係なくーー
一見上記のクエリは同じ時間帯のメールを取得しているようだが、上のクエリを実行すると、日本時間の「2019/07/20 9:00:00 ~ 2019/07/22 9:00:00」のメールを取得してくれます。下のクエリを実行すると、正しく日本時間「2019/07/20 0:00:00 ~ 2019/07/22 0:00:00」のメールを取得してくれます。
(実行結果は全部UTC時間に変換されるため、コレクション内のReceivedOnの値は-9時間になる)
生井沢さんが書いてた現象も再現しました。.netの日時変換の挙動がおかしいかもしれないですね。
日本語ロケールで下記のクエリを生成したあとに、
(@SQL=urn:schemas:httpmail:datereceived>='20 7月 2019 00:00' AND urn:schemas:httpmail:datereceived<='22 7月 2019 00:00')
クエリを実行するとき、うまく変換できずこともあって、出力された件数は0件になっています。
あるいは日本語ロケールで「2019/05/07 0:00:00」と「2019/06/08 0:00:00」二つのDateTimeを作成し、MS Outlook VBOで指定すると、作成されたクエリは下記になります。
( AND urn:schemas:httpmail:datereceived>='07 5月 2019 00:00' AND urn:schemas:httpmail:datereceived<='08 6月 2019 00:00')
しかし実行するとき、勝手に2019/07/05と2019/08/06に解釈され、別の時間帯のメールを取得してしまいます。
(Windows環境と関係あります?)
現時点では、英語ロケールで取得したい時間帯を+9時間で取得したほうが無難でしょう。。。
------------------------------
Chenglung Tsai
Consultant
Avanade
------------------------------