Oracleデータ型に月と年のみを格納したい。
Time_periodという列に「01-FEB-2010」のような日付が格納されています。
月と年のみを取得するために、次のようなクエリを作成しました
select to_char(time_period,'MON-YYYY') from fact_table;
結果を 'FEB-2010'としますが、これは問題ありませんが、唯一の問題は、varcharデータ型にあることです。
だから私は好きでした
select to_date(to_char(time_period,'MON-YYYY'),'MON-YYYY') from fact_table
2010年2月1日を取得します。日付データ型にFEB-2010のみを保存することはできませんか
「FEB-2010」は日付ではないため、日付列に格納することはあまり意味がありません。
上記のTO_CHARロジックを使用して、「MON-YYYY」の場合、必要な文字列部分をいつでも抽出できます。
これがデータウェアハウス環境のDIMENSIONテーブル用であり、これらを(データ属性として)ディメンションテーブルに個別の列として含める場合、適切なデータ型を使用して、2つの異なる列に月と年を格納する必要があります。 。
例..
Month varchar2(3) --Month code in Alpha..
Year NUMBER -- Year in number
or
Month number(2) --Month Number in Year.
Year NUMBER -- Year in number
最も簡単な解決策は、正しいデータ型を使用して列を作成することです:DATE
例えば:
テーブルを作成します。
テーブルtest_date(mydate date)を作成します。
行を挿入:
test_date値に挿入(to_date('01 -01-2011 '、' dd-mm-yyyy '));
月と年を取得するには、次のようにします。
select to_char(mydate, 'MM-YYYY') from test_date;
結果は次のようになります:01-2011
使用するもう1つのクールな機能は「EXTRACT」です
select extract(year from mydate) from test_date;
これが返されます:2011