如何基于DateTime属性实现NGSI-LD指定时间范围的实体查询
NGSI-LD 时间范围查询解决方案
核心查询语法
NGSI-LD的/entities接口q参数的DateTime属性查询遵循以下规则:
- 时间比较运算符支持
>、<、>=、<=,分别对应大于、小于、大于等于、小于等于 - 比较的时间值必须为标准ISO 8601格式,且必须用双引号包裹
- 多个查询条件用
;拼接代表逻辑与,用,拼接代表逻辑或
实际调用示例
1. 自定义DateTime属性范围查询
假设你需要查询measureTime属性在2024年3月1日0点到2024年3月7日0点之间的所有实体,请求写法如下:GET /entities?q=measureTime>="2024-03-01T00:00:00Z";measureTime<"2024-03-07T00:00:00Z"
2. 系统内置时间属性查询
如果需要查询实体的创建/更新时间范围,直接使用NGSI-LD内置的createdAt(创建时间)、modifiedAt(更新时间)属性即可:GET /entities?q=modifiedAt>="2024-03-01T00:00:00Z"
常见排查点
如果请求仍无返回结果,可逐一核对以下项:
- 确认查询的属性在对应实体中确实为DateTime类型,属性名拼写完全正确
- 确认时间值的双引号未被URL编码错误,部分客户端自动编码时需保证双引号转义正确
- 确认请求头中已添加
Accept: application/ld+json,部分上下文代理实现要求指定该请求头才会正确解析时间类型查询
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

