Sql - 查找日期是否在两个日期之间

时间:2014-01-22 12:18:35

标签: mysql sql

我有一个FromDate字段和ToDate字段。

我正在寻找今天在“从”和“到”之间的行

      select * from job
      where job.type='manager'
      and '2014-01-22' between job.FromDate and job.ToDate

查询不会抛出异常,甚至会返回一些行。但它不对 - 它返回的行没有我要查找的日期。

P.S。我正在使用的日期格式是我的数据库的正确格式。

2 个答案:

答案 0 :(得分:0)

试试这个

select * from job
where job.type='manager'
and job.FromDate <= '2014-01-22' and job.ToDate >= '2014-01-22'

答案 1 :(得分:0)

比较日期通常很棘手,尤其是如果值存储为datetime而不是date。时间组件可以影响比较。另一种可能性是ToDate对于最近的记录是NULL。以下是解决此问题的一种方法:

  select *
  from job
  where job.type ='manager' and
        date('2014-01-22') between date(job.FromDate) and date(coalesce(job.ToDate, '2099-12-31'))

但是,在列上使用该函数会降低查询效率。相反,您可以尝试:

  select *
  from job
  where job.type ='manager' and
        job.FromDate < '2014-01-23' and
        (job.ToDate >= '2014-01-22' or job.ToDate is null);