【问题标题】:Select Date Between Two Columns在两列之间选择日期
【发布时间】:2011-11-03 16:05:05
【问题描述】:

我需要一个 SQL 查询。
如果我有两列 STARTDATEEND_DATE
我想选择日期介于这两个日期之间的所有行。

例如:开始日期 = 2011 年 1 月 1 日和结束日期 = 2011 年 2 月 2 日。

【问题讨论】:

  • 您的意思是您需要为结果集中从开始到结束之间的每个日期设置一行吗?
  • 如果这是 MySQL。如果没有,抱歉快速欺骗关闭投票:)
  • 所有亲密的选民,这怎么不是一个真正的问题? OP想要做的事情很清楚SELECT * FROM t1 WHERE ? BETWEEN startdate AND enddate

标签: sql


【解决方案1】:

这对你有帮助吗?

select * 
from table 
where START_DATE < NOW() AND END_DATE > NOW()

根据数据库,使用 CURRENT_TIMESTAMP() 或 TODAY()

【讨论】:

    【解决方案2】:
    SELECT * FROM table1 
    WHERE '2011-01-01' BETWEEN table1.startdate AND table1.enddate
    

    now() 或参数等替换明确的日期。

    如果结束日期定义为NOT NULL,您可以这样做:

    SELECT * FROM table1 
    WHERE '2011-01-01' BETWEEN table1.startdate AND COALESCE(table1.enddate, NOW())
    

    见:http://www.1keydata.com/sql/sql-coalesce.html

    【讨论】:

    • +1 - 但我会将 enddate 更改为 COALESCE(enddate,now())
    • 如果enddate 被定义为NOT NULL,好建议。
    【解决方案3】:

    你是这个意思吗:

    select *
    from mytable
    where start_date >= '01/01/2011'
    and end_date <= '02/01/2011'
    

    除非您进一步澄清您的问题,否则我们很难提供更好的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2015-07-08
      • 1970-01-01
      • 2013-11-23
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多