2016-04-05 7 views
0

と製品の間の選択日SQL - 解決、最新の開始日

SELECT TO_DATE(PRODUCT_FINISH_DATE) - TO_DATE(PRODUCT_START_DATE) 
FROM MANUFACTURED_PRODUCT 
WHERE ROWNUM = 1 
ORDER BY PRODUCT_START_DATE ASC; 

-

テーブル:MANUFACTURED_PRODUCT

列:PRODUCT_ID, PRODUCT_START_DATE, PRODUCT_FINISH_DATE

SS:http://i.imgur.com/L7BePwc.png

試み1:

SELECT DATEDIFF(D, PRODUCT_START_DATE, PRODUCT_FINISH_DATE) as Difference 
FROM MANUFACTURED_PRODUCT 
ORDER BY PRODUCT_START_DATE ASC LIMIT 1; 

エラー1:

ORA-00933: SQL command not properly ended 
00933. 00000 - "SQL command not properly ended" 
*Cause:  
*Action: 
Error at Line: 3 Column: 32 

試み2:

SELECT DATEDIFF(D, PRODUCT_START_DATE, PRODUCT_FINISH_DATE) as Difference 
FROM MANUFACTURED_PRODUCT 
ORDER BY PRODUCT_START_DATE ASC; 

エラー2:

ORA-00904: "DATEDIFF": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 1 Column: 7 
私が見の

すべての例では、次のようになります。

select DATEDIFF(d, @start, @end) 
from table 
order by @start asc limit 1; 
+0

少なくとも、「MANUFACTURED_PRODUCT」テーブルのサンプルデータ(および理想的には構造)を表示してください。 –

+1

あなたはあなたの質問に 'mysql'という質問を付けましたが、あなたは私たちにOracleエラーを表示しています。 AFAIK oracleは 'LIMIT'と' DateDiff'をサポートしていません – danrah

+0

質問が答えられたら、その答えを受け入れます。ソリューションを見つけたら、それを答えとして追加し、それを受け入れます。解決策が見つかったことを示すために質問のテキストを変更しないでください。また、なぜあなたは 'VARCHAR'として日付を格納していますか?あなたは本当にそれをすべきではありません。 –

答えて

0

私はあなたがoracleデータベースに対してクエリを実行している、mysql質問として、あなたの質問にタグ付けされているけれども、それは

select datediff(PRODUCT_START_DATE,PRODUCT_FINISH_DATE) as Difference from FROM MANUFACTURED_PRODUCT 
ORDER BY PRODUCT_START_DATE ASC; 
0

されるべきだと思いますLIMITおよびDateDiffをサポートしていません。

最初のエラーは、認識されていないLIMITでクエリを終了し、2番目のエラーが不明な関数DateDiffであるためです。

編集:あなたは、コードのこの部分を使用することができます。

select * from (SELECT TO_DATE(PRODUCT_FINISH_DATE) - TO_DATE(PRODUCT_START_DATE) FROM MANUFACTURED_PRODUCT ORDER BY PRODUCT_START_DATE ASC) where rownum=1; 
+0

私はこれを試しましたが、最近の日付に制限するにはどうすればいいですか?私は最終的にそれを使用するようになった:SELECT TO_DATE(PRODUCT_FINISH_DATE) - TO_DATE(PRODUCT_START_DATE) からMANUFACTURED_PRODUCT ORDER BY PRODUCT_START_DATE ASC; –

+0

は 'where rownum = 1'を使用します。私の編集された答えを見てください。 – danrah

+0

'select * from()'を使う理由は、注文後に最初の行を取得したいからです。そうしないと、予期しない結果が発生します。 – danrah

0

この

SELECT TO_DATE(PRODUCT_FINISH_DATE、 'DD/MM/YYYY')してみてください - TO_DATE(PRODUCT_START_DATEを、「DD/MM/yyyy ')RUTIUM = 1のMANUFACTURED_PRODUCTからの日 ORDER BY PRODUCT_START_DATE;

関連する問題