Shopify Admin API (GraphQL) の日時によるフィルタリングの仕様について

解決済
ryosuke_sato
新規メンバー
1 0 1

注文情報を Shopify Admin API (GraphQL) で取得する実装をしているのですが、 `query` オプションによるフィルタリングで `created_at` を指定しているのですが、「日付」によるフィルタリングはされますが、「時刻」によるフィルタリングがされないようです。

例えば以下のような Query を実行した場合:

{
  orders(first: 10, query: "created_at:>2021-11-10T07:46:21Z") {
    edges {
      node {
        createdAt
      }
    }
  }
}

以下の結果が返ってきました:

{
  "data": {
    "orders": {
      "edges": [
       {
          "node": {
            "createdAt": "2021-11-10T07:13:23Z"
          }
        },
        {
          "node": {
            "createdAt": "2021-11-10T07:48:24Z"
          }
        }
      ]
    }
  }
}

created_at:>2021-11-10T07:46:21Z を指定しているので 2021-11-10T07:13:23Z の結果は除外しかったのですが、結果には含まれてしまっています。

日付の部分を created_at:>2021-11-11T00:00:00Z とすると除外されるので「日付」では有効なようです。

 

この振る舞いについて特にドキュメントでは解説されていなかったようなのですが、不具合なのか仕様なのか、ご存じの方がおられたら教えて頂きたいです。

1 件の受理された解決策

ベストソリューション
mashabow
観光客
9 1 7

成功

質問者の佐藤さんとは同僚ですが、引っかかる方が多そうなのでここで回答します :)

正しく抽出するためには、日時部分にクオートが必要です。例えば、"created_at:>'2021-10-04T05:00:00Z'" のような指定をすれば、5時以降のものが正しく抽出されます。

Shopify.png

日時部分をクオートせずに "created_at:>2021-10-04T05:00:00Z" のように指定すると、質問のとおり0時として扱われてしまうようです。

Shopify-2.png

 

詳しい説明はありませんが、ドキュメントにも一応「Date value はクオートしろ」と書かれています。

Any name, or any quoted string (single or double quotes are both permitted). Date values must be a string surrounded by quotes.

「:」が特殊文字扱いになっている関係かもしれません。

元の投稿で解決策を見る

1件の返信1
mashabow
観光客
9 1 7

成功

質問者の佐藤さんとは同僚ですが、引っかかる方が多そうなのでここで回答します :)

正しく抽出するためには、日時部分にクオートが必要です。例えば、"created_at:>'2021-10-04T05:00:00Z'" のような指定をすれば、5時以降のものが正しく抽出されます。

Shopify.png

日時部分をクオートせずに "created_at:>2021-10-04T05:00:00Z" のように指定すると、質問のとおり0時として扱われてしまうようです。

Shopify-2.png

 

詳しい説明はありませんが、ドキュメントにも一応「Date value はクオートしろ」と書かれています。

Any name, or any quoted string (single or double quotes are both permitted). Date values must be a string surrounded by quotes.

「:」が特殊文字扱いになっている関係かもしれません。

元の投稿で解決策を見る