2020年12月11日金曜日

アプリケーションに固定したタイムゾーンの設定

Oracle APEXのアプリケーションへタイムゾーンを設定する方法について、以前にこちらの記事を書いています。以前の記事では、利用者側のタイムゾーンをどのようにOracle APEXのアプリケーションに反映させるか、という方法について説明しています。そうではなく、単にアプリケーションが指定したタイムゾーン、例えば、日本時間で動いてくれれば良い、という場合もあるでしょう。

アメリカでも中国でも、どこからのアクセスでも日本時間で動いてくれたら良いのだけど、サーバーはアメリカにあって、サーバー側のタイムゾーンは変えられない、といった場合にできることを紹介します。

アプリケーションの共有コンポーネントから、セキュリティ属性を開きます。

データベース・セッションのセクションの初期化PL/SQLコードに、タイムゾーンを設定するALTER文を記載します。

BEGIN
   EXECUTE IMMEDIATE 'alter session set time_zone = ''Asia/Tokyo'' ';
  END;

変更の適用をクリックすると、設定したアプリケーションのセッション・タイムゾーンが日本時間になります。

自動タイムゾーンの設定では、ブラウザ上でJavaScriptを動かして取得した時差を、CGIのパラメータtzにセットしてアプリケーションに返すといった、一手間というか一往復のリクエストが追加で発生します。画面左上にSet Time Zoneと表示されている間に行われている作業です。

タイムゾーンを固定するだけであれば、上記のように設定することで、その作業を除くことができます。