首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个日期范围的交集的日期计数

问两个日期范围的交集的日期计数
EN

Stack Overflow用户
提问于 2014-11-14 14:11:39
回答 1查看 155关注 0票数 0

我想要两个日期范围之间相交的日期数。例如,如果一个日期范围为01/11/2014 - 25/11/2014,第二个日期范围为25/10/2014 - 10/11/2014,而相交日期号为10(01/11/2014 -10/11/2104),我可以编写一个mysql查询来获得结果。我的表结构是记录(sfid、date1 date、date2 date)。

我想输入一个日期范围,并希望得到与之相对应的输入日期范围的sfid和相交日期编号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-14 14:28:34

代码语言:javascript
复制
 DROP TABLE IF EXISTS my_table;

 CREATE TABLE my_table (event_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,start_date DATE,end_date DATE);

 INSERT INTO my_table VALUES (1,'2014-10-25','2014-11-10'),(2,'2014-11-01','2014-11-25');

 SELECT * FROM my_table;
 +----------+------------+------------+
 | event_id | start_date | end_date   |
 +----------+------------+------------+
 |        1 | 2014-10-25 | 2014-11-10 |
 |        2 | 2014-11-01 | 2014-11-25 |
 +----------+------------+------------+

 SELECT GREATEST(x.start_date,y.start_date) start
      , LEAST(x.end_date,y.end_date) end
      , DATEDIFF(LEAST(x.end_date,y.end_date),GREATEST(x.start_date,y.start_date)) diff 
   FROM my_table x 
   JOIN my_table y 
     ON y.event_id > x.event_id 
    AND y.start_date < x.end_date 
    AND y.end_date > x.start_date;
 +------------+------------+------+
 | start      | end        | diff |
 +------------+------------+------+
 | 2014-11-01 | 2014-11-10 |    9 |
 +------------+------------+------+

..。或者类似的东西。

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

https://stackoverflow.com/questions/26931912

复制
相关文章

相似问题

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