Oracle Analyticsでは、日時の計算に使用されるデフォルトのタイム・ゾーンを管理者が「システム設定」で設定します。このグローバル設定はすべての計算に適用されます。このトピックでは、特定の計算に別のタイムスタンプを使用する場合に、TIMESTAMPADD
関数を使用して別のタイム・ゾーンを指定する方法を説明します。
システム設定に計算のデフォルトのタイム・ゾーンを設定する
CURRENT_DATE
CURRENT_TIME()
CURRENT_TIMESTAMP()
NOW()
管理者は、コンソールの「詳細システム設定」の下にある「日付計算のデフォルト・タイム・ゾーン」オプションを使用して、計算に使用するタイムスタンプを変更できます。ドロップダウン・リストから必要なタイム・ゾーンを選択し、新しい値に変更を適用して有効にします。
グローバル・タイム・ゾーンの設定の詳細は、システム設定 - 形式オプションに関する項を参照してください。
計算のタイムスタンプに特定のタイム・ゾーンを使用する
計算でシステム設定以外のタイムスタンプを生成するには、TIMESTAMPADD
関数をCURRENT_TIMESTAMP()
またはNOW()
とともに使用します。基本的なTIMESTAMPADD
の計算は次のとおりです:
TIMESTAMPADD(SQL_TSI_<<interval>>, <<integer expression>>, <<timestamp expression>>)
タイムスタンプの計算では、HOUR
が間隔で、時間オフセットは、UTCとレポートされるタイム・ゾーンとの時差です。例:
TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP(5))
この計算では、現在のタイムスタンプがアメリカ山地標準時で返されます。新しいタイムスタンプ列は、導出列として論理表ソースに作成することも、データベースに直接マップすることもできます。この違いは計算が実行される場所(Oracle Analyticsかデータベースのどちらか)にあります。次の図は、「式ビルダー - 式」ダイアログでデータベースに直接マップされている計算を示しています。
デフォルトのタイム・ゾーンがUTCに設定されていると、ユーザーのタイム・ゾーンに相対する1日のうちの特定の時間帯に、CURRENT_DATE
関数で正しい日付が返されません。たとえば、UTCが午前0時のとき、ローカル日付が、時間オフセットの期間のUTC日付に一致しません。
タイムスタンプの計算を日付としてキャストすると、この問題を解決できます。例:
cast(TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP) as date)
次の図は、「式ビルダー - 派生論理列」ダイアログで派生列として作成されている計算を示しています。
一意または唯一のレポートでは、データ・ビジュアライゼーションとクラシック分析のいずれかのレポート・レベルで、タイムスタンプの計算を作成できます。計算を再利用する予定の場合は、セマンティック・モデル(またはRPDファイル)の列として計算を定義する方が簡単なことが多いです。