Oracle SQL ストアド プロシージャで date/timeztamp をあるタイムゾーンから別のタイムゾーンに変換するにはどうすればよいですか? DB サーバーは、DB に接続するマシンと同様に GMT を使用するように設定されていますが、夏時間であるかどうかに応じて、データは CST または CDT で保存する必要があります。
私はこのSQLが機能しています:
select to_char(from_tz(TO_TIMESTAMP(to_char(SYSDATE,'mm-dd-yyyy hh24:mi:ss'), 'mm-dd-yyyy hh24:mi:ss'),'GMT') at time zone 'CST6CDT','mm-dd-yyyy hh24:mi:ss') from dual;
しかし、それをプロシージャに入れると、次のエラーで失敗します: ORA-01843: 有効な月ではありません
これは私が手順のために持っているものです:
declare
p_systemDT TIMESTAMP WITH TIME ZONE;
BEGIN
select to_char(from_tz(TO_TIMESTAMP(to_char(SYSDATE,'mm-dd-yyyy hh24:mi:ss'), 'mm-dd-yyyy hh24:mi:ss'),'GMT') at time zone 'CST6CDT','mm-dd-yyyy hh24:mi:ss') into p_systemDT from dual;
DBMS_OUTPUT.PUT_LINE('p_systemDT = ' || p_systemDT);
end;