Cognos ユーザーのタイムゾーンに応じた現在時刻の表示
ユーザーのタイムゾーンに応じた現在時刻の表示
こんな感じに、レポートを実行した時刻をレポート上に表示したい時があります。
これは、localtimestamp という関数で表示しているのですが、この関数はデータベース・ソフトウェアを実行しているサーバーの現在時刻を返します。
ところでCognosにはユーザー毎に「タイム・ゾーン」の情報を持っているので、ユーザーのタイムゾーンに応じた「現在時刻」を表示したい、という要件がありますが、localtimestampでは常にサーバー時間なので、ユーザーのタイムゾーンなどお構いなしです。
何とかこの要件を実現できないだろうか、という時に役立つ実装です。
実装
まず、レポート実行ユーザーのタイムゾーンは以下で取得できます。※「TimeZone」というデータアイテムで作成
#sq($account.personalInfo.timeZoneID)#
この様に「_shift_timezone」関数を使う事で、東京のタイムゾーンから、各ユーザーのタイムゾーンに時刻変換します。※「TimeZoneTime」というデータアイテムで作成
_shift_timezone (localtimestamp,'Asia/Tokyo',#sq($account.personalInfo.timeZoneID)#)
先程のニューヨークユーザーで実行すると、ニューヨーク時間の表示になります。
ユーザーのタイムゾーンで時刻表示したい、という要件があった場合、是非思い出してご活用下さい。
Author And Source
この問題について(Cognos ユーザーのタイムゾーンに応じた現在時刻の表示), 我々は、より多くの情報をここで見つけました https://qiita.com/shinyama/items/e82327215d166fb97d79著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .