tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:数式項目による日付時間型から日付型に変換する際の注意

Salesforceの数式項目は別の項目の値を指定した条件で変換できる便利な項目です。
通常、日付時間型の項目を日付型に変換したい場合は「DATEVALUE関数」を使用して変換します。


この「DATEVALUE関数」を使用しなくても次のように戻り値が日付型なら日付時間項目をそのまま指定する方法でも変換ができてしまいます。

f:id:tyoshikawa1106:20131116122632p:plain


このように問題なく変換されているように見えます。

f:id:tyoshikawa1106:20131116122808p:plain


しかし、この方法ではきちんと日付型に変換できていません。
それは変換後の項目で並び替えを行うと確認できます。

昇順で並び替え

f:id:tyoshikawa1106:20131116122936p:plain

降順で並び替え

f:id:tyoshikawa1106:20131116123007p:plain


このように同じ値であるにもかかわらず元となった日付時間型の値と同じように並び替えが行われます。表示上は時間部分が除外されているように見えますが、内部では時間部分も保持されたままなのだと思われます。


この問題はきちんと「DATEVALUE関数」を使用して変換することで防ぐことができます。

f:id:tyoshikawa1106:20131116123531p:plain


DATEVALUE関数で日付型に変換することで、同じ日付の並び順が変更されないようになります。

昇順で並び替え

f:id:tyoshikawa1106:20131116123550p:plain

降順で並び替え

f:id:tyoshikawa1106:20131116123600p:plain


並び替えが正常に行われないのはビューの操作時に影響があるだけでなく、レポート使用時にも影響が出てしまったり、Force.com開発で使用するSOQLのOrder Byによる並び替えも正常に実行できなくなります。

以上のような問題を回避するために数式項目による型変換を行う場合は、用意された型変換の関数を使用するようにした方がいいと思います。