如何在给定日期之间选择json对象

如何在给定日期之间选择json对象,json,datetime,jq,Json,Datetime,Jq,下面是api的json响应。需要使用jq(在shell脚本中)从json获取汇率。 以下是条件: 对于给定的currencyfrom和currencyto,开始日期应等于或大于当前日期,结束日期应等于或小于当前日期 [ { "status": "ACTIVE", "startdate": "2019-01-31T00:00:00.000Z", "enddate": "2019-02-07T00:00:00.000Z", "s

下面是api的json响应。需要使用jq(在shell脚本中)从json获取汇率。 以下是条件: 对于给定的currencyfrom和currencyto,开始日期应等于或大于当前日期,结束日期应等于或小于当前日期

[
    {
        "status": "ACTIVE",
        "startdate": "2019-01-31T00:00:00.000Z",
        "enddate": "2019-02-07T00:00:00.000Z",
        "source": "default",
        "exchangerate": "12",
        "currencyfrom": "AUD",
        "currencyto": "BRL",
        "id": "64ce2916-af8a-42b9-9fb9-def47f824ea2"
    },
    {
        "status": "ACTIVE",
        "startdate": "2019-03-10T00:00:00.000Z",
        "enddate": "2019-03-30T00:00:00.000Z",
        "source": "default",
        "exchangerate": "13",
        "currencyfrom": "BRL",
        "currencyto": "GBP",
        "id": "4fd0dc10-d6b7-4298-924d-281a0d49c2e9"
    },
    {
        "status": "ACTIVE",
        "startdate": "2019-03-10T00:00:00.000Z",
        "enddate": "2019-03-10T16:20:10.813Z",
        "source": "default",
        "exchangerate": "17",
        "currencyfrom": "AUD",
        "currencyto": "BRL",
        "id": "52bfe481-f4cf-4822-9566-886c4faeaf10"
    }
]

忽略时区注意事项,可以使用以下帮助器函数作为时间比较的基本构造块:

def secs: sub("\\....(?<z>.)$"; .z) | fromdate;
def secs:sub(\\....(.$);.z)fromdate;
使用它,您可以选择数组中的JSON对象,同时保留数组结构,如下所示:

now as $now
| map(select(.startdate|secs) <= $now and $now <= (.enddate|secs)) )
现在作为$now
|地图(选择(.startdate |秒)