2012-04-03 32 views
0

1天我有這樣的查詢:日期:由從第2天月組下月

SELECT EXTRACT(MONTH FROM d.mydate) AS synmonth, SUM(apcp) AS apcptot 
FROM t_synop_data2 d 
WHERE d.mydate 
BETWEEN '2011-01-01' AND '2011-12-31' 
AND d.idx_synop = '06712' 
GROUP BY synmonth 

該查詢將所有雨(鋁塑複合板)在一個月內是這樣的:

1 32.8 => from 2011.01.01 to 2011.01.31 
2 27.2 => from 2011.02.01 to 2011.02.28 
3 21.0 
4 21.8 
5 88.5 
6 131.4 
7 118.6 
8 57.1 
9 80.9 
10 84.6 
11 1.1 
12 143.5 => from 2011.12.01 to 2011.12.31 

這就是我想要的,但有一點區別。

這個區別是我必須從月份的第2天到下個月的第1天添加apcp,然後返回上面的結果。

1 132.8 => from 2011.01.02 to 2011.02.01 
2 27.2 => from 2011.02.02 to 2011.03.01 
3 21.0 
4 21.8 
5 88.5 
6 131.4 
7 118.6 
8 57.1 
9 80.9 
10 84.6 
11 1.1 
12 143.5 => from 2011.12.02 to 2012.01.01 

我嘗試了一些add_date(),extract()或date_format()但沒有結果。

謝謝您的回答 文斯

回答

1

下面是該查詢:

SELECT EXTRACT(MONTH FROM ADDDATE(d.mydate,-1)) AS synmonth 
, SUM(apcp) AS apcptot 
FROM t_synop_data2 AS d 
WHERE ADDDATE(d.mydate,-1) BETWEEN '2011-01-01' AND '2012-12-31' 
AND d.idx_synop = '06712' 
GROUP BY synmonth 

您可以通過添加兩列像這樣的檢查結果:

SELECT EXTRACT(MONTH FROM ADDDATE(d.mydate,-1)) AS synmonth 
, SUM(apcp) AS apcptot 
, MIN(d.mydate) AS date_min 
, MAX(d.mydate) AS date_max 
FROM t_synop_data2 AS d 
WHERE ADDDATE(d.mydate,-1) BETWEEN '2011-01-01' AND '2012-12-31' 
AND d.idx_synop = '06712' 
GROUP BY synmonth 
0

您可以按EXTRACT(MONTH FROM d.mydate - INTERVAL 1 DAY)

SELECT EXTRACT(MONTH FROM d.mydate) AS synmonth, SUM(apcp) AS apcptot 
FROM t_synop_data2 d 
WHERE d.mydate 
BETWEEN '2011-01-01' AND '2011-12-31' 
AND d.idx_synop = '06712' 
GROUP BY EXTRACT(MONTH FROM d.mydate - INTERVAL 1 DAY) 
+0

謝謝,它工作正常。 – Vince 2012-04-04 08:22:21

相關問題