Couchbase N1QL查询两天之间没有时间的数据
Couchbase N1QL query data between two days without time
我想在两天之间(从 00:00:00.000 开始日期时间到 23:59:59.999 结束日期时间)从带有 N1QL 的 Couchbase 存储桶中检索数据
只提供没有时间的日期就够了吗,像这样:
SELECT c.*
FROM customer c
WHERE c.start BETWEEN '2017-10-09' AND '2017-10-10'
或者我是否需要明确提供时间:
SELECT c.*
FROM customer c
WHERE c.start BETWEEN '2017-10-09T00:00:00.000Z' AND '2017-10-10T23:59:59.999Z')
?
您需要使用带有映射函数的视图,将日期转换为数组,如下所示:
function (doc, meta) {
emit(dateToArray(doc.start), doc);
}
然后使用 the startKey and endKey filter
请求视图
使用 NodeJS 客户端的示例 the range method:
const viewQuery = couchbase.ViewQuery.from(nameOfYourDesignDocument, nameOfYourView);
bucket.query(viewQuery.range([2017,10,9], [2017,10,10]), (error, rows) => {
});
ISO-8601 中的 Couchbase 日期是可比较的字符串。这两个查询都很好。查看更多详细信息 https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/datefun.html
我想在两天之间(从 00:00:00.000 开始日期时间到 23:59:59.999 结束日期时间)从带有 N1QL 的 Couchbase 存储桶中检索数据
只提供没有时间的日期就够了吗,像这样:
SELECT c.*
FROM customer c
WHERE c.start BETWEEN '2017-10-09' AND '2017-10-10'
或者我是否需要明确提供时间:
SELECT c.*
FROM customer c
WHERE c.start BETWEEN '2017-10-09T00:00:00.000Z' AND '2017-10-10T23:59:59.999Z')
?
您需要使用带有映射函数的视图,将日期转换为数组,如下所示:
function (doc, meta) {
emit(dateToArray(doc.start), doc);
}
然后使用 the startKey and endKey filter
请求视图使用 NodeJS 客户端的示例 the range method:
const viewQuery = couchbase.ViewQuery.from(nameOfYourDesignDocument, nameOfYourView);
bucket.query(viewQuery.range([2017,10,9], [2017,10,10]), (error, rows) => {
});
ISO-8601 中的 Couchbase 日期是可比较的字符串。这两个查询都很好。查看更多详细信息 https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/datefun.html