我的集合中有三个记录,其时间信息记录如下:
{utcTime: "13:28:00+0000", utc: 1329398880000, etDate: "02/16" etTime: "08:28:00-0500"}
{utcTime: "13:02:00+0000", utc: 1333976569000, etDate: "04/09" etTime: "09:02:00-0400"}
{utcTime: "13:14:00+0000", utc: 1398172449000, etDate: "04/22" etTime: "09:14:00-0400"}
当我搜索
09:00:00-0400和 09:30:00-0400 之间的所有
utcTime
列时,所有三个记录都会返回,因为 MarkLogic 正在将 -0400 转换为 UTC 并进行比较。 09:00:00-0400 等于 13:00:00+0000,因此所有记录均按预期返回。
但是我怎样才能避免这种时区比较呢? 如果用户只需要 09:00:00 到 09:30:00 之间的记录,无论时间偏移如何,则 09:02:00 和 09:14:00 记录应该是唯一返回的记录,而 08:28:00 -0500 被忽略?
有办法做到这一点吗?
您可以在
etTime
属性上放置一个字符串范围索引,并搜索以“09:”开头的内容
cts:search(doc(),
cts:and-query((
cts:json-property-range-query("etTime", ">", "09:*"),
cts:json-property-range-query("etTime", "<", "10:*")
))
)