【问题标题】:MSSQL: Finding all items between two datesMSSQL:查找两个日期之间的所有项目
【发布时间】:2015-10-28 21:59:35
【问题描述】:

我正在基于 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' }
})

但是,这只会给我提供它们之间的记录,而不是开始和结束日期。

【问题讨论】:

  • 对于未“结束”的记录,“record_end_date”的值是多少?

标签: sql sql-server sails.js waterline


【解决方案1】:

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

【讨论】:

  • 谢谢!一帆风顺:)
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 2018-07-25
  • 2021-11-01
相关资源
最近更新 更多