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 将不满足大于或等于条件。