ViewCreatorの計算式で日付データを操作する例

ViewCreatorを利用するとデータベース等に格納されているデータを簡単に画面に表示することが出来ます。
ViewCreatorについて - intra-mart Accel Platform ViewCreator 管理者操作ガイド

テーブルに格納されているデータをそのまま表示するだけでなく、関数や演算子を用いて計算した結果を表示させることも可能です。
計算式カラムの設定 - intra-mart Accel Platform ViewCreator 管理者操作ガイド

計算式で目的のデータを取得するには、様々な関数を組み合わせる必要がある場合があります。
そこで今回は日付系のデータに関する計算式の記述例をご紹介します。

システム日付の5日前を計算する方法

ここでは、システム日付の5日前を計算して画面に表示する例を示します。

システム日付はTODAY関数で取得できます。

TODAY()

上記の計算式を実行すると、以下のような結果が得られます。

Fri Apr 01 2016 15:36:09 GMT+0900

関数についての詳細は下記を参照してください。
利用可能な関数一覧

TODAY関数が返すデータ型は「日付型」です。

計算する前に日付型データを数値型データへ変換します。
NUM関数を利用すると日付型データを数値型データ(ミリ秒)へ変換することができます。

下記のように記述してください。

NUM(TODAY())

実行すると以下のような結果が得られます。

1459492621237

数値データに変換しておくと演算子を利用した計算が可能です。
計算を行うには単位を合わせておく必要があります。

今回は5日前を計算したいので、5日をミリ秒に変換しておきます。

5 * 24 * 60 * 60 * 1000 = 432000000

よって、システム日付の5日前は下記のように表すことが出来ます。

NUM(TODAY()) - 432000000

可読性を高めたい場合は、下記のように記述する方が良いかもしれません。

NUM(TODAY()) - 5 * 24 * 60 * 60 * 1000

これで、システム日付の5日前を表すミリ秒の数値データが取得できました。

しかし、ミリ秒表記のままでは読みにくいのでFORMAT関数を利用して整形すると分かりやすいです。

FORMAT('yyyy/MM/dd HH:mm:ss',
NUM(TODAY()) - 5 * 24 * 60 * 60 * 1000, true)

第3引数にtrueを指定すると、第2引数は数値データ(ミリ秒)として扱われます。

実行結果

2016/03/27 15:40:38

和暦表示も可能です。

FORMAT('GGGGyyyy年MM月dd日 HH時mm分ss秒',
NUM(TODAY()) - 5 * 24 * 60 * 60 * 1000, true, 'ja_JP_JP')

実行結果

平成28年03月27日 15時46分05秒

リスト集計のフッタに上記の計算式の埋め込みを行った例です。
計算式の利用例

埋め込みはデータ参照編集画面で行います。
計算式の設定例
リスト集計とサマリ集計ではヘッダとフッタに入力された文字列のうち [[ と ]]で括られた部分文字列は計算式として解釈されます。

[[FORMAT('GGGGyyyy年MM月dd日 HH時mm分ss秒',
NUM(TODAY()) - 5 * 24 * 60 * 60 * 1000, true, 'ja_JP_JP')]]

日付の差分計算で利用可能な関数

日付型データ同士の差分を取得したい場合はSUBTRACT関数で計算が可能です。

SUBTRACT(TODAY(), 作成日)

上記の計算式ではシステム日付と作成日フィールドから取得したデータの差分をミリ秒で取得することができます。

日付の差分計算式

先ほどと同じく、ミリ秒表記では読みづらいので整形を行います。
ただし、今回算出したミリ秒データは時間軸上の1点を表すデータではなく時間の長さですのでFORMAT関数は利用できません。

このような場合はDATETIMEDURATIONFORMAT関数を利用してください。

DATETIMEDURATIONFORMAT("d日H時間", SUBTRACT(TODAY(), 作成日))

日付の差分計算+フォーマット

上記の例ではシステム日付と「作成日」の差分が1日と1時間であることが算出されています。
言い換えると、作成日から1日と1時間経過していることが分かります。