首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PostgreSql中同一列的一组日期之间获取给定日期之间的记录

如何在PostgreSql中同一列的一组日期之间获取给定日期之间的记录
EN

Stack Overflow用户
提问于 2016-03-30 11:54:57
回答 2查看 42关注 0票数 0

我有一张有旅游细节的桌子。空码,tourId,旅游地点和旅游日期,我想检查谁是在一个给定日期的旅游?

员工X从01-01-2016到10-0-01-2016。

雇员Y由07-01-2016至12-01-2016

公司员工X将于2016年12月1日至2016年1月15日至2016年12月1日开始巡演。

表有以下详细信息

代码语言:javascript
复制
EmpCode TourId PlaceFrom PlaceTo TourDate
100       1       delhi   jaipur  01-01-2016
100       1       jaipur  mumbai  05-01-2016
100       1       mumbai  delhi   10-01-2016
101       2       delhi   pune    07-01-2016
101       2       pune    delhi   12-01-2016
100       3       alwar   jaipur  12-01-2016
100       3       jaipur  udaipur 13-01-2016
100       3       udaipur alwar   15-01-2016

TourId表示唯一的旅游

如果我在01-01-2016搜索谁在巡演,它应该返回100。

如果我在08-01-2016搜索谁在巡演,它应该返回100和101。

如果我在12-01-2016搜索谁在巡演,它应该返回102。

如果我在14-01-2016搜索谁在巡演,它应该返回100。

如何在postgresql中的单个查询中获得所需的输出。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-30 12:07:01

您可以使用聚合函数:

代码语言:javascript
复制
select EmpCode, TourId
from t
group by EmpCode, TourId
having '2016-01-01' between min(TourDate) and max(TourDate);

TourIdselect中是可选的。

票数 1
EN

Stack Overflow用户

发布于 2016-03-30 12:20:08

代码语言:javascript
复制
SELECT EmpCode
FROM TourDetails
GROUP BY EmpCode
HAVING '2016-01-14' BETWEEN MIN(TourDate) AND MAX(TourDate);

最有可能的EmpCode不应该出现在该表中,而应该出现在高级table中。此外,请考虑使用ISO 8601作为日期,或时间戳字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36308096

复制
相关文章

相似问题

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