sql >> データベース >  >> RDS >> Oracle

Oracleで日付から月番号を抽出する方法

    値が数値または文字列の場合は、適切なマスクを使用して日付に変換できます。これは、欠落しているものであり、発生しているエラーの原因です(セッションの NLS_DATE_FORMAT > 明らかにデータの形式と一致しない設定。しかし、@ MTOがコメントで述べたように、とにかく頼るべきではありません):

    to_date(ID_BB_SECURITY, 'YYYYMMDD')
    

    次に、月番号を抽出します そこから:

    select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT
    

    または、部分文字列を使用することもできます:

    select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;
    

    これらは、固定された一貫性のある形式を想定しています。これは、間違ったデータ型を使用する場合は常に危険な想定です。数値の場合は、数値から文字列への暗黙的な変換を行っています。これを明示的な変換に変換すると、わかりやすくなります。

    すでに日付である場合(もちろん、当然のことながら)、変換は必要ありません:

    select extract(month from ID_BB_SECURITY) from BT_EXPORT
    


    1. RまたはPostgreSQLでの最小変動チェック

    2. 2つの列の組み合わせに対する一意の制約?

    3. postgres9.2で同等のROWID

    4. 主キーの値を変更する場合、従属列の値を変更する必要がないのはなぜですか?