2012-05-10 42 views
1
>   cycleNO| month | year| start date | close date   |state | prv month | next mnt 
>    1  4  2012 1/4/2012  30/4/2012 23:59:59  1  3    5 
>    1  5  2012 1/5/2012  31/5/2012 23:59:59  0  4    6 
>    1  6  2012 1/6/2012  30/6/2012 23:59:59  0  5    7 
>    1  7  2012 1/7/2012  31/7/2012 23:59:59  0  6    8 
>    2  4  2012 1/4/2012  30/4/2012 23:59:59  1  3    5 
>    2  5  2012 1/5/2012  31/5/2012 23:59:59  0  4    6 
>    2  6  2012 1/6/2012  30/6/2012 23:59:59  0  5    7 
>    2  7  2012 1/7/2012  31/7/2012 23:59:59  0  6    8 

我有一個如上所示的表(cycle_set),並希望獲取(cycleNO,月份,年份,開始日期,結束日期)條件,其中state = 0和start-close包含系統日期的日期也在狀態= 0的緊接着的下個月。獲取系統日期和狀態的行

輸出應該是:

cycleNO | month | year | start date | close date 
1  5  2012 1/5/2012  31/5/2012 23:59:59 
1  6  2012 1/6/2012  30/6/2012 23:59:59 
2  5  2012 1/5/2012  31/5/2012 23:59:59 
2  6  2012 1/6/2012  30/6/2012 23:59:59 
+1

你可以顯示要返回的示例行?或者詳細說明你的最後一句話。 –

+0

你用MySQL **和** Oracle標記了它。你在使用哪一個? –

+0

我將使用oracle – Kimi

回答

1
select cycleNO,month,year,start_date,close_date 
FROM cycle_set 
WHERE state=0 and sysdate between start_date and close_date 

UPDATE:如果你想獲得當前和未來一個月:

select cycleNO, month, year, start_date, close_date 
FROM cycle_set 
WHERE state=0 
    and (sysdate between start_date and close_date or --current month 
     sysdate between add_months(start_date,-1) and close_date --next_month 
     ) 
+0

另外我必須取下一個週期 – Kimi

1
SELECT cycleNO,month,year,start_date,close_date FROM cycle_set 
WHERE state=0 
AND MONTH(start_date) = (SELECT month FROM cycle_set WHERE state=0 AND...) 
AND MONTH(close_date) = (SELECT month FROM cycle_set WHERE state=0 AND...) 

的問題是,你沒有選擇下一個結果一個月的方法。這兩個子句中的WHERE子句是什麼?

如果你提取所有的數據,然後在PHP或任何你正在使用的工作,它會更容易。

+0

從cycle_set中選擇cycleNO,month,year,start_date,close_date,其中 sysdate在start_date和close_date和 之間的狀態= 0,但如何選擇下個月還? – Kimi

+0

對於下個月的狀態將永遠爲零 – Kimi

0

假設你有一個數據集(如例子中所示):

SELECT cycleno,month,year,start_date,close_date 
     FROM cycle_set 
    WHERE state=0 
     AND ( month = EXTRACT(month FROM sysdate) 
      OR month = EXTRACT(month FROM sysdate)+1 
      ) 
    ORDER BY cycleno, month, year, start_date 
+1

你可以得到錯誤的一年 –

相關問題