MSSQL:查找两个日期之间的所有项目

时间:2015-10-28 21:59:35

标签: sql sql-server sails.js waterline

我正在基于MSSQL数据库中的数据创建一个sails.js REST-API。每条记录都有一个开始日期和结束日期。我想提供一个查询日期,找到所有"已开始"但未"结束"的记录。从概念上讲,我一直在想:

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' }
})

然而,这只会给我介于它们之间的记录,而不是 on 起始结束日期。

1 个答案:

答案 0 :(得分:3)

看起来你需要在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就不会满足大于或等于的条件。