kintoneの日付項目はYYYY-MM-DD形式の表示なので、他の日付フォーマット(YYYY年M月d日、MM月dd日 等)で変換する際にはDATE_FORMAT関数を利用するのが一般的です。
ところが最近、DATE_FORMAT関数を使用して日付フォーマット変換をした際に
#PRECISION!
という見慣れないエラーが表示されたことがありました。
DATE_FORMAT関数の使い方は間違っていませんし、DATE_FORAMT関数の第二引数(”日時の形式”)も「DATE_FORMAT(A, “YYYY年M月d日 H時m分”, “Asia/Tokyo”)」としているため、特に問題ありません。
ググってみてもすぐに解決できそうなサイトが見つからない・・・。
ということで今回は、DATE_FORMAT関数を利用して日付フォーマットを変換した際にPRECISION!エラーが出た場合の対処方法についてをまとめてみました。
#PRECISION!エラーの原因
まずは原因からですが、#PRECISION!エラーが出たのは、
数値と計算の精度を変えていたため
でした。
数値と計算の精度は、アプリの設定画面→設定→高度な設定から設定できる項目です。
デフォルトでは上記のように、小数部の桁数は4となっていますが、ここを増やして9としていたところ、次のように#PRECISION!エラーが表示されるような状態となっていました。
試しに少し検証してみたところ、DATE_FORMAT関数を利用した際に#PRECISION!エラーの発生するのは、全体の桁数が16の場合、小数部の桁数を7以上とした場合に発生するようでした。
#PRECISION!エラーの対処方法
小数部の桁数を減らせばエラーは解消するのですが、大抵、桁数をデフォルトの4から変更して増やしている場合というのは何かしら理由があってと想定されます。なので小数部の桁数を減らすという案は現実的ではありません。
一番簡単な方法としては、
全体の桁数を増やす
という事をすればエラーは回避できます。
全体の桁数=16、小数部の桁数=7、という設定をしている場合、DATE_FORMAT関数を使用すると#PRECISION!エラーが発生します。
そこで全体の桁数を17に増やしてみると、正常に変換されるようになりました。
桁数を増やすだけでPRECISION!エラーは解消することができました。
小数部の桁数が大きいほど、全体の桁数も増やす必要があるようです。全体の桁数は最大30までなので、状況に応じて設定値を変えてあげると良いかと思います。
まとめ
DATE_FORMAT関数を利用した際に#PRECISION!エラーが出た場合の対処方法についてご紹介しました。
対処法として「小数部の桁数を増やしたら全体の桁数も増やす」というのを覚えておくと良いかと思います。(DATE_FORAMT関数を利用する場合は)
とはいえ、数値と計算の精度の設定値によってDATE_FORAMT関数の結果が#PRECISION!エラーとなる場合があるというのは、直感的にわかりづらい部分ではないでしょうか。
#PRECISION!エラーが発生した際に、とりあえずkintoneのヘルプページを見てみましたが、エラーページでは次のようにしか書いておらず、「日付は関係ないかな・・」と思ってしまいました。
#PRECISION! | 計算結果が有効桁数を超えています。 有効桁数の設定については、次のページを参照してください。 数値の有効桁数と丸めかたを設定する |
https://jp.cybozu.help/k/ja/user/app_settings/form/autocalc/autocalc_error.html
そのため、エラー回避の方法を探るのに多少時間をロスしてしまいました。
この、数値と計算の精度の設定がDATE_FORAMT関数の結果に影響するという点については、サイボウズ側で対応してほしいところですね。今後のkintoneのアップデートに期待です。
この記事が、同じような現象でハマっている方の参考になれば幸いです。