2012-05-23 150 views
0

之间周期以我的表,我有两个单独的日期字段,X和Y在字段×1具有13/08/2008和外地YI的日期有日期13/08/2015年。MySQL查询显示日期

我在想,如果有工作了六个月时间日期是现场X和Y之间有什么SQL的方式,其在单独的行显示的结果?所以,我希望在两个领域有以下结果:

BEGIN  | END 
13-Aug-08 | 13-Feb-09 
13-Feb-09 | 13-Aug-09 
13-Aug-09 | 15-Feb-10 
15-Feb-10 | 13-Aug-10 
13-Aug-10 | 14-Feb-11 
14-Feb-11 | 15-Aug-11 
15-Aug-11 | 13-Feb-12 
13-Feb-12 | 13-Aug-12 
13-Aug-12 | 13-Feb-13 
13-Feb-13 | 13-Aug-13 
13-Aug-13 | 13-Feb-14 
13-Feb-14 | 13-Aug-14 
13-Aug-14 | 13-Feb-15 
13-Feb-15 | 13-Aug-15 

这可能吗?

感谢

回答

0

你可以尝试这样的事情:

DATE '2006-05-20' + INTERVAL 5 DAY -> DATE '2006-05-25' 
DATE '2006-05-20' + INTERVAL 5 MONTH -> DATE '2006-10-20' 
DATE '2006-05-20' + INTERVAL 5 YEAR -> DATE '2011-05-20' 

例1:

CREATE TABLE BEGIN_DATES 
(
    BDates DATETIME 
); 

INSERT INTO BEGIN_DATES VALUE ('13/08/2008'); 
INSERT INTO BEGIN_DATES VALUE ('13/02/2009'); 
INSERT INTO BEGIN_DATES VALUE ('13/08/2009'); 
INSERT INTO BEGIN_DATES VALUE ('15/02/2010'); 
INSERT INTO BEGIN_DATES VALUE ('13/08/2010'); 
INSERT INTO BEGIN_DATES VALUE ('14/02/2011'); 
INSERT INTO BEGIN_DATES VALUE ('15/08/2011'); 
INSERT INTO BEGIN_DATES VALUE ('13/02/2012'); 
INSERT INTO BEGIN_DATES VALUE ('13/08/2012'); 
INSERT INTO BEGIN_DATES VALUE ('13/02/2013'); 
INSERT INTO BEGIN_DATES VALUE ('13/08/2013'); 
INSERT INTO BEGIN_DATES VALUE ('13/02/2014'); 
INSERT INTO BEGIN_DATES VALUE ('13/08/2014'); 
INSERT INTO BEGIN_DATES VALUE ('13/02/2015'); 


SELECT BDates AS BEGIN, (BDates + INTERVAL 6 MONTH) AS END 
FROM BEGIN_DATES 

DROP TABLE BEGIN_DATES 

Ë充足2:

BEGIN 
SET @date = '2008-08-13'; 
SET @Edate ='2015-08-13'; 

WHILE @date <= @Edate DO 

SELECT @date AS BEGIN_DATE, CAST(@date AS DATETIME) + INTERVAL 6 MONTH AS END_DATE; -- ADDDATE(@date,INTERVAL 6 MONTH) 

SET @date = CAST(@date AS DATETIME) + INTERVAL 6 MONTH; -- Or ADDDATE(@date,INTERVAL 6 MONTH) 

END WHILE; 
END 
+0

谢谢。但是这意味着我必须知道开始日期是什么,然后才能插入。我希望有一个更具动态性的方法,MySQL可以为我制定六个月的日期是从X日期开始的。然后我必须将这个逻辑应用到一个包含超过11万条不同日期X的记录的表中。 – user1236443

+0

您可以使用此方法采取动态方式:**选择CURDATE()AS BEGIN,(CURDATE()+间隔6个月)** – Nation

+0

你可以将它放在一个while循环 – Nation