0
年齢を計算する必要があります。誕生日はのようにvarchar2
に保存され、誕生日が記録されていない人もいます。デフォルト値は00000000
です。ここでOracle DB:文字列から年齢を計算する
は私のコードです:
SELECT
e.id_number,
e.birth_dt,
(CASE WHEN SUBSTR(e.birth_dt, 1, 4) = '0000' THEN 0
WHEN SUBSTR(e.birth_dt, 1, 4) <> '0000' THEN
ROUND(MONTHS_BETWEEN(SYSDATE, TO_DATE(e.birth_dt, 'YYYYMMDD'))/12)
ELSE -1
END) age
FROM employee e
エラーは次のとおりです。
ORA-01843:有効ではありません月
は何も悪いことですか?私は理解できませんでした。
'birth_dt'カラムのサンプルデータを共有できますか?データが不良であるか、フォーマットマスクが間違っていると、エラーが説明される可能性があります。 –
あなたは正しいと思います。私はいくつかのグループの人でこれを試しました。しかし、すべての人に適用されると、エラーが出てきました。多分それがあなたが言った理由です。どうもありがとうございます! – user8237908
私は、どの行に無効な日付データがあるかを検出するためのクエリを考え出すことができると思います。 –