「xxxxxよりも大きい日付」フィルターを指定することでODataに一連のレコードを返す方法はありますが、ODataフィードから以前に取得した日付を使用していますか?
ユースケース:最後に完了したオンライン注文のリストを表示するWebページを作成したいものとします。これは私が目指しているものです:
私が苦労しているのは、日付の「より大きい」フィルターを指定することです。何らかの理由で、ODataの日付フィルターは、ODataの固有の日付形式ではあまりうまく機能しないようです。最初に取得した日付を、フィルタリングに使用できる別の形式に変換する必要がありますか?
私はこのようなことをしたい:
[http://mydomain/Services/v001.svc/Orders?$filter=close_dt gt 1338336000000][1]
参考:V2を使用しています
これを考え出した。
OData V2はそのままで、SQLから日付をJSON日付形式で次のように返します。
/Date(1338282808000)/
ただし、OData呼び出し内でフィルターとして日付を使用するには、次のように日付をEDM形式にする必要があります。
2012-05-29T09:13:28
したがって、最初のOData呼び出しから日付を取得し、それを次のようなOData呼び出しで使用するためにEDM形式に変換する必要がありました。
/Services/v001.svc/Orders?$filter=close_dt gt DateTime'2012-05-29T09:13:28'
最終的に、フォーマットを切り替えるjavascript関数を作成しました。
function convertJSONDate(jsonDate, returnFormat) {
var myDate = new Date(jsonDate.match(/\d+/)[0] * 1);
myDate.add(4).hours(); //using {date.format.js} to add time to compensate for timezone offset
return myDate.format(returnFormat); //using {date.format.js} plugin to format :: EDM FORMAT='yyyy-MM-ddTHH:mm:ss'
}
いくつかのメモ:
OData V4では、日付フィルタリング形式が$filter=close_dt gt 2006-12-30T23:59:59.99Z
に変更されました
例えば
ODataの以前のバージョンについては、以前の回答を参照してください
参考までに:プロトコルのV3では、非ティックベースの日時形式がデフォルトになりました。
... "ReleaseDate": "1992-01-01T00:00:00"...
日時ロジックを使用する場合、ltまたはgtを実行できます。
例えば... mydomain/Services/v001.svc/Orders?$ filter = close_dt gt datetime'20141231 '