:::: MENU ::::

Salesforceの日付項目を時間・分・秒・曜日も表示させる

Salesforceを使っていて地味に困る問題。
標準項目で用意されている「作成日」「最終更新日」などが、
日付項目として用意されていること。
結構こういうのは時間まで知りたい場合が多い。

カスタム項目であれば日付/時間項目で作成すればいいのだが、
標準項目となると型変換はできない。

なのでカスタム項目の数式で「作成日」「最終更新日」を
読み込んで時間や曜日を表示させる必要がある。

カスタム項目の作成へは以下の手順でいける。
>|
設定 → アプリケーションの設定 → リード → 項目 → カスタム項目の「新規」を押下
|<

** 時間・分・秒まで表示させる

>|
データ型は「数式」を選択 → 「日付/時間」型を選択 → 数式に「LastModifiedDate」
|<
日付型である最終更新日(LastModifiedDate)を日付/時間型で出力するだけでOK。
日付型でありながら時間まで持っているからできる芸当。
作成日のときは「CreatedDate」を指定。

リードのカスタム項目(最終更新日時)

** 時間・分・秒に加え曜日も表示する

曜日まで含めると日時/時間型では無理なんで、
テキスト型で表現する必要がある。

>|
データ型は「数式」を選択 → 「テキスト」型を選択 → 数式に下記を入力
|<

>|plain|
LEFT( TEXT( LastModifiedDate + 0.375 ), 10 )
& "(" &
IF(
ISNULL( LastModifiedDate ),
"",
CASE( MOD( DATEVALUE(LastModifiedDate + 0.375) - DATE(1900, 1, 7), 7 ),
0, "日",
1, "月",
2, "火",
3, "水",
4, "木",
5, "金",
"土"
)
)
& ") " &
MID( TEXT( LastModifiedDate + 0.375 ), 11, 9 )
||<

リードのカスタム項目(最終更新日時_曜日あり)

テキスト型で日時を出力するときに気を付けるのがタイムゾーン。

>https://help.salesforce.com/HTViewHelpDoc?id=formula_using_date_datetime.htm&language=ja:title=数式での日付値および日付/時間値の使用の概要>
日付値および日付/時間値は GMT で格納されます。レコードを保存するときは、項目値がユーザのタイムゾーンから GMT に調整され、その後レコード詳細ページやレポートで表示される時点で閲覧者のタイムゾーンに戻されます。日付に変換することで問題が生じることはありません。日付/時間から日付に変換しても日付値は同じであるためです。

ただし、日付/時間の項目や値を処理する場合、変換は常にユーザのタイムゾーンではなく、GMT で行われます。標準の日付/時間項目から別の標準の日付/時間を減算する場合は、どちらの項目も同じタイムゾーンのため問題は生じません。他方、計算するいずれかの値が、テキストまたは日付値から日付/時間値に変換されたものである場合には、結果が異なります。
<<

『日付/時間およびタイムゾーンの留意点』に書いてあるが、
Salesforceで保存される日付データはすべてGMTで格納される。
それを表示させるユーザのタイムゾーンによって、
表示させる時間を変えているらしい。

数式で計算するときもGMTで処理されるようなので、
テキストに加工する前に日本時間に合わせないといけない。

>https://help.salesforce.com/HTViewHelpDoc?id=formula_using_date_datetime.htm&language=ja:title=数式での日付値および日付/時間値の使用の概要>
Date_Time_c - DATETIMEVALUE( "2013-08-01 12:00:00" )
この場合、DATETIMEVALUE( “2013–08–01 12:00:00” ) は 2013–08–01 12:00:00Z で、0.79167 (19 時間) という結果が返されます。
<<
1時間以下は小数点で表すようなので、
日本時間に調整する「+9時間」は「+0.375」で計算できる。

あとはLEFTやMIDを使って必要な時間部分をうまいこと切り出して足すだけ。
曜日は公式にあるサンプルから取ってきたものを流用した。

- [https://help.salesforce.com/apex/HTViewHelpDoc?id=formula_examples_dates.htm&language=ja:title=一般的な日付数式]
- [https://help.salesforce.com/HTViewHelpDoc?id=customize_functions_i_z.htm&language=ja:title=数式の演算子と関数 I – Z]