首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有start_date和end_date的行,需要返回在日期范围内的记录。

带有start_date和end_date的行,需要返回在日期范围内的记录。
EN

Stack Overflow用户
提问于 2014-07-22 16:06:44
回答 2查看 87关注 0票数 0

我有一个包含任务的表,每个任务都有一个date_start和date_finish字段。

我需要构造一个查询,该查询将接受传递的日期,如果传递的日期介于date_start和date_finish之间,则返回所有行。

这有道理吗?

我一直试图使用标准日期类型查询,例如:

代码语言:javascript
复制
SELECT *
FROM project_task
WHERE project_task.date_start >= '2013-10-10' AND project_task.date_finish <= '2013-10-10'

但是它没有返回正确的结果,而且使用间隔也不起作用,因为我需要考虑这两个字段(date_start和date_finish),而不仅仅是其中一个字段。

我认为这可能只是我需要的查询的地方部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-22 16:28:45

你犯了一个简单的错误,你弄错了操作员的顺序:

代码语言:javascript
复制
SELECT *
FROM project_task
WHERE 
    project_task.date_start <= '2013-10-10'      -- start should before the test date
AND 
    project_task.date_finish >= '2013-10-10'     -- and finish after the test date

解释

如果选中的日期介于date_start和date_finish之间,那么我们必须最终达到开始日期。我们也可以晚些时候约会。这意味着

代码语言:javascript
复制
date_start will be lower or equal than the date checked

第二张支票说:完成日期还没有过去。所以

代码语言:javascript
复制
date_finish has to be greater or equal than the date checked.

使用最初的查询,您将只得到项目的开始和结束在'2013-10-10‘。

演示

票数 0
EN

Stack Overflow用户

发布于 2014-07-22 16:12:45

代码语言:javascript
复制
DECLARE @Now datetime = '2013-10-10T00:00:00'

SELECT *
FROM project_task a
WHERE @Now >= a.Date_Start
AND @Now < isnull(a.Date_Finish, '9999-12-31T00:00:00')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24892388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档