OracleのSQLで西暦と和暦の変換を行う方法について説明します。
和暦を扱う場合、TO_CHAR()やTO_DATE()の第3引数に利用するカレンダーを指定します。
その上で書式に和暦を表す"ee"や"e"を指定します。
※カレンダーを指定していないと、「ORA-01822:年代書式コードがこのカレンダでは無効です。」という書式エラーが発生します。

以下、サンプルです。
1.西暦→和暦の変換
 1)「元号年.月.日 時:分.秒」の形式にする。
  SELECT
TO_CHAR(sysdate,
'eeyy.mm.dd hh24:mi:ss',
'nls_calendar=''Japanese Imperial''')
FROM DUAL;


 2)「元号略号年.月.日 時:分.秒」の形式にする。
  SELECT
 TO_CHAR(sysdate,
'eyy.mm.dd hh24:mi:ss',
'nls_calendar=''Japanese Imperial''')
FROM DUAL;


2.和暦→西暦の変換
 1)「元号年.月.日 時:分.秒」の形式から西暦にする
  SELECT
TO_CHAR(TO_DATE('平成20.5.23',
'eeyy.mm.dd',
'nls_calendar=''Japanese Imperial'''),
'yyyy/mm/dd')
FROM DUAL;


2)「元号略号年.月.日 時:分.秒」の形式から西暦にする
  SELECT
TO_CHAR(TO_DATE('H20.5.23',
'eyy.mm.dd',
'nls_calendar=''Japanese Imperial'''),
'yyyy/mm/dd')
FROM DUAL;


【補足事項】
・和暦の日付区切り文字は、"/"でも動作します。
・和暦を西暦に変えるためには、DATE型にキャストする必要があります。

和暦の場合は、「平成20年5月23日」や「H20.5.23」のように表現するのが正しい表記だと思うのですが、元号の略号で表現する場合に「H20.5.23」ではなく、「H20/5/23」と表現する人が意外に多くいます。
和暦と西暦の区切りを混在していて違和感がないのかな?