0

我在数据库中有一个表,我想编写查询代码来选择两条记录之间的集体日期。

这是示例代码:

表是:

CREATE TABLE `user` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `startdate` date NOT NULL,
  `enddate` date NOT NULL,
  PRIMARY KEY (`userid`)
) 

示例 1,我在表中有 2 条记录。

(userid =>1 , startdate => '2012-02-02' , enddate => '2012-10-02') (userid =>2 , startdate => '2012-04-02' , enddate => '2012 -09-02')

我想选择查询给出范围'2012-04-02'直到'2012-09-02'

示例 2,我在表中有 2 条记录。

(userid =>1 , startdate => '2012-02-02' , enddate => '2012-02-12') (userid =>2 , startdate => '2012-04-02' , enddate => '2012 -09-02')

我想选择查询给出空范围

有没有最好的查询?

4

2 回答 2

1

如果我做对了,并且您需要的时间段是这些行的时间段的交集:

select * from
(
    select max(startdate) d1, min(enddate) d2 from user
) where d1<=d2
于 2012-12-19T10:29:59.747 回答
0

我想这就是你想要的

  select userid,min(startdate),max(enddate),abs(max(enddate)-min(startdate)) as range 
  from user group by userid;
于 2012-12-19T10:19:07.467 回答