私は宿題の問題に取り組んでいます。私は近くにいますが、データ変換について助けが必要だと思います。またはsysdate-start_date計算
質問は:
EXスキーマを使用して、Date_Sampleテーブル(以下の形式)からdate_idとstart_dateを取得するSELECTステートメントを記述し、その後に、interval関数を使用してstart_dateとsysdate。(値は、このラボを実行する日付によって異なります。)開始日が2月28日(任意の年)に等しいレコードのみを表示します。
DATE_ID START_DATE YEARS_AND_MONTHS_SINCE_START
2 Sunday , February 28, 1999 13-8
4 Monday , February 28, 2005 7-8
5 Tuesday , February 28, 2006 6-8
この質問を参照するEXスキーマは、2つの列を持つ単純なDate_Sampleテーブルです。
DATE_ID NUMBER NOT Null
START_DATE DATE
私はこのコードを書きました:
SELECT date_id, TO_CHAR(start_date, 'Day, MONTH DD, YYYY') AS start_date ,
NUMTOYMINTERVAL((SYSDATE - start_date), 'YEAR') AS years_and_months_since_start
FROM date_sample
WHERE TO_CHAR(start_date, 'MM/DD') = '02/28';
しかし、開始列からの年と月が正しく機能していません。計算された日付が1999年からであるとき、それは何年も何ヶ月もの間非常に高い数を得ています。つまり、13-8である必要があり、5027-2を取得しているので、正しくないことがわかります。NUMTOYMINTERVALを使用しましたが、これは正しいはずですが、sysdate-start_dateが機能しているとは思いません。start_dateのデータ型は単に日付です。私はROUNDを試しましたが、それを正しくするために助けが必要かもしれません。
私の計算に問題があり、そこで正しい間隔を取得する方法を見つけようとしています。私が皆に十分な情報を提供したかどうかはわかりませんが、あなたがそうする前に私がそれを理解したかどうかをあなたに知らせます。
これは、MurachのOracleおよびSQL / PLの本、第17章から、他の誰かがその章を学ぼうとしている場合の質問です。ページ559。