1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cognos ユーザーのタイムゾーンに応じた現在時刻の表示

Posted at

ユーザーのタイムゾーンに応じた現在時刻の表示

こんな感じに、レポートを実行した時刻をレポート上に表示したい時があります。
001.PNG

これは、localtimestamp という関数で表示しているのですが、この関数はデータベース・ソフトウェアを実行しているサーバーの現在時刻を返します。

ところでCognosにはユーザー毎に「タイム・ゾーン」の情報を持っているので、ユーザーのタイムゾーンに応じた「現在時刻」を表示したい、という要件がありますが、localtimestampでは常にサーバー時間なので、ユーザーのタイムゾーンなどお構いなしです。
002.PNG

何とかこの要件を実現できないだろうか、という時に役立つ実装です。

実装

まず、レポート実行ユーザーのタイムゾーンは以下で取得できます。※「TimeZone」というデータアイテムで作成

# sq($account.personalInfo.timeZoneID)#

この様に「_shift_timezone」関数を使う事で、東京のタイムゾーンから、各ユーザーのタイムゾーンに時刻変換します。※「TimeZoneTime」というデータアイテムで作成

_shift_timezone (localtimestamp,'Asia/Tokyo',#sq($account.personalInfo.timeZoneID)#)

レポートにこの様にシングルトンで配置して。
003.PNG

先程のニューヨークユーザーで実行すると、ニューヨーク時間の表示になります。
004.PNG

ユーザーのタイムゾーンで時刻表示したい、という要件があった場合、是非思い出してご活用下さい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?