【问题标题】:Condition in Two Date field with Two Date Parameters具有两个日期参数的两个日期字段中的条件
【发布时间】:2011-11-26 14:30:33
【问题描述】:

我在名为 From_Date 和 To_Date 的表中有一个 ID 字段和两个日期字段。我想用日期条件选择这个日期。

ID From_Date   To_Date
1  2011-05-03  2011-05-28
2  2011-04-29  2011-05-10
3  2011-05-09  2011-05-20
4  2011-04-28  2011-05-09
5  2011-04-29  2011-05-19
6  2011-05-09  2011-05-09
7  2011-05-09  2011-05-09
8  2011-05-09  2011-05-09
9  2011-05-21  2011-05-21
10 2011-06-06  2011-06-06
11 2011-05-21  2011-05-28
12 2011-05-14  2011-05-28
13 2011-05-23  2011-05-24
14 2011-05-27  2011-05-27
15 2011-05-23  2011-05-24

现在我想要两个参数作为开始日期和结束日期的条件 喜欢

@StartDate = '05/01/2011'
@EndDate = '05/10/2011'

当 startdate 和 enddate 参数之间的日期数组应与 From_Date 和 To_Date 字段之间的日期数组进行比较时,我希望这些参数的输出

输出:

ID From_Date   To_Date
1  2011-05-03  2011-05-18
2  2011-04-29  2011-05-10
3  2011-05-09  2011-05-20
4  2011-04-28  2011-05-09
5  2011-04-29  2011-05-19
6  2011-05-09  2011-05-09
7  2011-05-09  2011-05-09
8  2011-05-09  2011-05-09

这可能在单个查询中而不是使用触发器或函数吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow @Vinay Mistry,请务必使用 {}(工具栏按钮)来表示您的代码部分、数据表值等。

标签: sql sql-server-2005 sql-server-2008


【解决方案1】:

如果您想获取所有具有From_DateTo_Date 的记录都在您的日期范围(@StartDate and @EndDate) 之间,那么它的简单查询如下:

SELECT * FROM TableName
WHERE (From_Date BETWEEN @StartDate AND @EndDate) OR (To_Date BETWEEN @StartDate AND @EndDate);

【讨论】:

  • 您的建议没有考虑From_Date@StartDate 之前和To_Date@EndDate 之后的情况。根据示例输出,这也应该考虑在内(参见ID=5 的行)。
  • @AndriyM :是的,我在回答中提到了这一点。所以对于 case ID=5,Mikael 的回答是正确的。
【解决方案2】:
select *
from YourTable
where From_Date <= @EndDate and
      To_Date >= @StartDate

https://data.stackexchange.com/stackoverflow/q/113761/

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多