MSSQL:查找两个日期之间的所有项目
MSSQL: Finding all items between two dates
我正在基于 MSSQL 数据库中的数据创建 sails.js REST-API。每条记录都有开始日期和结束日期。我想提供一个查询日期并查找 "started" 但不是 "ended" 的所有记录。所以在概念上我在想:
SELECT * FROM table WHERE
record_start_date <= query_date
AND
record_end_date >= query_date
在 Waterline/Sails 中看起来像这样:
Model.find({
record_start_date: { 'lessThanOrEqual': req.query.q + ' 00:00:00.0'},
record_end_date: { 'greaterThanOrEqual': req.query.q + ' 23:59:00.0' }
})
然而,这只会给我介于它们之间的记录,而不是在开始和结束日期。
看来您需要在 FIND 中交换时间:
Model.find({
record_start_date: { 'lessThanOrEqual': req.query.q + ' 23:59:00.0'},
record_end_date: { 'greaterThanOrEqual': req.query.q + ' 00:00:00.0' }
})
考虑记录的开始日期为 3/20 和结束日期为 3/25 的情况。如果您传递查询日期 3/25,如果您将“23:59”附加到它(就像您最初所做的那样),record_end_date 将不满足大于或等于条件。
我正在基于 MSSQL 数据库中的数据创建 sails.js REST-API。每条记录都有开始日期和结束日期。我想提供一个查询日期并查找 "started" 但不是 "ended" 的所有记录。所以在概念上我在想:
SELECT * FROM table WHERE
record_start_date <= query_date
AND
record_end_date >= query_date
在 Waterline/Sails 中看起来像这样:
Model.find({
record_start_date: { 'lessThanOrEqual': req.query.q + ' 00:00:00.0'},
record_end_date: { 'greaterThanOrEqual': req.query.q + ' 23:59:00.0' }
})
然而,这只会给我介于它们之间的记录,而不是在开始和结束日期。
看来您需要在 FIND 中交换时间:
Model.find({
record_start_date: { 'lessThanOrEqual': req.query.q + ' 23:59:00.0'},
record_end_date: { 'greaterThanOrEqual': req.query.q + ' 00:00:00.0' }
})
考虑记录的开始日期为 3/20 和结束日期为 3/25 的情况。如果您传递查询日期 3/25,如果您将“23:59”附加到它(就像您最初所做的那样),record_end_date 将不满足大于或等于条件。