ブログ
kintoneの日付計算を簡単に!基本の日付計算方法と便利なプラグイン活用法
「kintone」で様々な業務をアプリ化していく中で、時刻や日付フィールドに入力した値から時間や日数、特定の日付を導きたいということも出てくるのではないでしょうか。
本記事では、kintoneで日付計算をしていくための設定方法や手順を解説していきます。
kintoneにおける日付、時刻、日時フィールド値とは
kintoneの日付、時刻、日時フィールドは少し特殊です。
見た目は日付(2025−01−01)や、時刻(08:00)が表示されていますが、文字列1行や数値フィールドのように入力された値がそのまま保存されているわけではありません。
カレンダーは30分刻みの時間から選択したり、細かい時刻を手入力できたりと、画面上は日付や時間で表示されていますが、内部的には秒数で記録されています。
日付や日時は「1970年1月1日午前0時0分」から、時刻は「午前0時0分からの経過秒数」です。
そのため、計算フィールドでこれらのフィールドを指定した際には、入力されている日付や時刻そのものではなくこの秒数が値として反映されます。
上記の点を踏まえながら、kintoneでの日付計算はどの様なシーンで利用できるのか。
kintoneの日付や時刻の計算はどのようなシーンで活用できるのかいくつか例示してみます。
経過時間の計算
勤怠管理をkintone上で行うような場合、出勤時間と退勤時間を元に勤務時間を計算することが可能です。
休憩の開始時間と終了時間もあれば休憩時間を引くことも可能ですし、勤務時間が4時間を超えている場合にのみ、固定で1時間を引くといったこともIF関数を組み合わせることで可能です。
期限の計算
kintoneで研修の受講管理をしたいといった場合に、受講日をもとに報告書の提出期限(例:受講日の1週間後)を自動で算出することも可能です。
固定日数の加算減算はできますが、営業日をもとにした日数計算(例:土日は省いて日付を計算)のようなことは基本機能ではできません。
また、計算で出した日付はそのままではリマインダーの条件通知には使えないため、期限日が近づいたら通知を送るようなことをしたい場合は、後述のプラグイン等が必要になります。
年齢の計算
生年月日と年齢の算出基準日を元に年齢を計算することもできます。
ただし、kintoneの計算はレコードを保存する際にのみ行われるので、レコードを編集しない限りはその時点での計算結果のままとなります。
また、ExcelにおけるToday関数もないため、今日の時点での年齢を常に表示させるということは基本機能では難しいです。
kintoneにおける日付計算の設定手順
ここからは日付計算の設定方法を説明していきます。
まずは計算フィールドでの設定からです。
例として下記の2つをご紹介します。
①1日後の時刻を設定
下図のように該当フィールドに「60(秒)*60(分)*24(時間)」で1日分の秒数を足します。
②1時間後の時刻を設定
下図のように該当フィールドに「60(秒)*60(分)」で1時間分の秒数を足します。
これらを応用することで、他のフィールドに入れた値分をズラした日付や時間を計算することもできます。
下図はその参考例です。
日付の計算結果の表示形式(DATE_FORMAT関数の活用方法)
kintone標準のハイフン区切りの日付ではなく
- スラッシュや日本語で年月日を用いて表示したいとき
- 日付から月だけを取り出したいとき
などは、DATE_FORMAT関数を使います。
どのように表記できるかは下の表をご参照ください。
書式 | 例 | 計算式 |
YYYY(年) | 2020 | DATE_FORMAT(日付, “YYYY”, “Etc/GMT”) |
MM(月) | 01 | DATE_FORMAT(日付, “MM”, “Etc/GMT”) |
M(月) | 1 | DATE_FORMAT(日付, “M”, “Etc/GMT”) |
dd(日) | 04 | DATE_FORMAT(日付, “dd”, “Etc/GMT”) |
d(日) | 4 | DATE_FORMAT(日付, “d”, “Etc/GMT”) |
YYYY/MM/dd(年/月/日) | 2020/01/04 | DATE_FORMAT(日付, “YYYY/MM/dd”, “Etc/GMT”) |
YYYY年MM月dd日(年月日) | 2020年01月04日 | DATE_FORMAT(日付, “YYYY年MM月dd日”, “Etc/GMT”) |
MM/dd | 01/04 | DATE_FORMAT(日付, “MM/dd”, “Etc/GMT”) |
M/d | 1/4 | DATE_FORMAT(日付, “M/d”, “Etc/GMT”) |
a KK:mm(午前午後 時:分) | 午前 09:30 | DATE_FORMAT(時間, “a KK:mm”, “Etc/GMT”) |
HH:mm(時:分) | 13:45 | DATE_FORMAT(時間, “HH:mm”, “Etc/GMT”) |
また、日付をスラッシュや年月日で区切って表記する場合は、下図のように数値での表記でなくなるため、文字列1行フィールドで自動計算する必要があります。
ただし、M-SOLUTIONSの提供する「文字列結合プラグイン」を使えば、自動計算機能では設定できない文字列も結合でき、よりも複雑な日付表記(例:24-12-12)も可能となります。
文字列結合プラグインが気になる方は、ぜひ資料をダウンロードしてみてください。
DATE_FORMAT関数活用の実際の手順
先述のDATE_FORMAT関数には下記の3つの引数が必要です。
- 第1引数(日時)
- 第2引数(日時の形式)
- 第3引数(タイムゾーン)
引数とは:関数に渡す値のこと。引数を使うことでさまざまな場面に対応できる関数を作ることができます。
第1引数(日時)
第1引数の日時は、日時、日付、時刻、作成日時、更新日時の日付系のフィールドだけでなく、数値や計算フィールドを指定することができます。
また、これらのフィールドに対して時間を足し引きさせるような計算を組み込むことも可能です。
(例:日付+24*60*60*1)
第2引数(日時の形式)
第2引数の日時の形式は、先述の表のように年月日時分の各部分をアルファベットで指定します。
半角の”(ダブルクォーテーション)で囲む必要があります。
指定できる日時の形式はkintoneのヘルプページにまとめられています。
また、「Date:」のように一部の文字が日時の形式と被ってしまう文字列を計算結果に含めたい場合は、半角の’(シングルクォーテーション)で囲んでください。
(例:”’Date:’YYYY/MM/dd”)
第3引数(タイムゾーン)
第3引数のタイムゾーンは、日付や時刻フィールドを指定した場合は「Etc/GMT」(協定世界時のタイムゾーンID)を指定します。
これ以外を指定した場合、表示される日付や時刻がずれることがあります。
また、数値や計算フィールドやUNIX時刻を指定した場合は、表示したいタイムゾーンを指定します。
(例:Asia/Tokyo)
活用例(年齢計算)
この関数を活用することで、年齢計算を行うことができます。
生年月日も年齢算出の基準となる日もDATE_FORMAT(生年月日, “YYYYMMdd”, “Etc/GMT”))のようにYYYYMMddの形式で数値8桁にします。
その後、それぞれ8桁数値にした基準日から生年月日を引き、10,000で割った上でROUNDDOWN関数で小数点以下を切り捨てることで求めることができます。
(10,000で割ることで月日部分を小数点以下に持っていき、小数点以下を切り捨てることで年数だけの値にする)
注意点
上図の中で生年月日も基準日も、別フィールドで一度8桁数字にしているのには理由があります。
DATE_FORMAT関数の計算結果は文字列となるため、1つの計算フィールドの中で直接(基準日-生年月日)を行えないのです。
そこで一旦計算フィールドに(DATE_FORMAT(生年月日, “YYYYMMdd”, “Etc/GMT”))とすることで、「文字列だけど8桁の数字だけなので数値だ」と認識させて数値に変換することができます。
日付フィールドが未入力の場合の対処法
DATE_FORMAT関数で参照している日付フィールドが空欄の場合、1970年1月1日として扱われます。
これを避けたい場合、以下の2つの方法があります。
①日付フィールドに初期値を設定する
日付フィールドに初期値を設定することで空白を避けることができます。
ただし、入力値のクリアを選ばれてしまうと空白になってしまうので、必須入力と組み合わせるか、次項目のように空白の場合の処理を関数で組み込む必要があります。
②IF関数で場合分けをする
日付フィールドの空欄を許容したい場合は、IF関数で空白の場合の処理を追加することで対処可能です。
例えば、IF(日付=””,””,DATE_FORMAT(日付, “YYYY/M/d”, “Etc/GMT”))のようにして、日付が空白の場合は計算結果も空白、そうでない場合はYYYY/M/dの形式で表記するのようにします。
kintoneで日付計算を行う際の注意点
ここまでkintoneで日付計算を行なったり日付の表記を調整する方法を紹介してきました。
これらを活用する上で注意点を3つ、ご紹介します。
①月の日数の違いやうるう年の対処が困難
固定の日数を足すのは問題ないのですが、
- ⚪︎ヶ月や⚪︎年を足す
- 開始日から終了日までの年数を計算する
といった場合に、月毎の日数や間にうるう年があるかどうかを判断できないため、普通に計算では誤差が生じます。
年数の計算の場合は、前述のようにDATE_FORMAT関数を使い、開始日も終了日もYYYYMMddの数値8桁にして、終了日-開始日を行い、10,000で割った上でROUNDDOWN関数で小数点以下を切り捨てることで比較的単純に求めることができます。
しかし、月数の加算減算を行う場合、年の繰上げ繰り下げだけでなく、日が29日〜31日の場合に計算後の月にその日がない場合の処理をする必要もあり、DATE_FORMAT関数で年月日をそれぞれ別のフィールドに分けた上でIF関数も使って場合分けをして計算する必要があり、非常に複雑になってしまいます。
②データの自動更新ができない
kintoneの計算フィールドはレコード保存時に計算結果が保存され、それ以降そのレコードを触らなかった場合は計算結果は保存時のままとなります。
そのため、レコードの編集をして保存し直すか、ファイル読み込みで一括更新をかけないと計算結果を更新できません。
今の年齢を常に表示したい、毎年年度初めの時点での在職年数を表示したいなどの要望がある場合は注意が必要です。
上記の方法で手動で更新をかけるか、プラグイン等で定期的に更新させる必要があります。
③表記上、日付にしているだけなのでリマインダーの条件に使えない
日付や日時フィールドの入力内容を元に通知を送ることができるリマインダーの条件通知ですが、計算フィールドや数値フィールド、文字列1行フィールドを指定できません。
計算によって求めた日付を利用して通知を送りたい場合は、プラグイン等を使って日付や日時フィールドに計算で求めた日付を入力するようにしないといけません。
日付計算プラグインを利用した日付計算方法
上記の注意点にあるように、kintone上で複雑な計算式を使いメンテナンス性を下げたくない、計算結果の日付でリマインダーを送りたいので日付フィールドにデータを入力したいといった場合に使えるプラグインを2つ紹介します。
kintone 日付計算プラグイン
1つ目は合同会社ぱんだ商会様の「日付計算プラグイン」です。
このプラグインはシンプルに計算の元となる日付フィールド、計算結果を出力するフィールド、年月日それぞれに加算する固定値もしくはフィールドを指定するだけです。
後から求めたい日付のフィールドが追加になった時のために一括更新機能もついています。
日付プラグイン(画像の工夫)
2つ目は株式会社Crena様の「日付プラグイン」です。
先述のプラグインと同様に基準となる日付フィールドから計算した日付を出すだけでなく、DATE_FORMAT関数で出した日付を日付フィールドに格納したり、年齢計算のような期間の計算も可能です。
また、一括更新機能を表示する一覧を選択できます。
機能面ではこちらの方が種類が多いですが、変換設定が10個までしかできないという制限もあるので、たくさん日付を扱いたいアプリで使用する際には注意が必要です。
AIを活用したkintoneの日付計算方法
いかがでしたか?
日付計算は少しややこしいですよね。
実はAIを使えば、もっと簡単に実現可能な日付計算もあります。
「kintoneとAIを連携するのって大変そう」と思うかもしれませんが、Smart at AIという連携サービスを使えば簡単にkintoneとAIが連携可能です。
Smart at AIには無料版もありますので、ぜひお試しください。
Smart at AIの詳細はこちらから↓
西暦から和暦に変換する方法
kintoneで和暦変換を行うには、本記事で紹介したような工夫が必要です。
しかし、Smart at AIを使用すれば、プロンプトを設定するだけで和暦を生成できます。
和暦変換用のフィールドを用意する必要なく和暦生成が可能なため、アプリ構造をシンプルにできます。
参考にプロンプトも添えますので、ぜひご利用ください。
プロンプトは以下のように設定します。
%%日付%%は、フィールド名です。
%%日付%%を和暦に変換してください。
出力は和暦のみを出力してください。
決して文章では出力しないでください。
月末日を生成する方法
上記のように日付情報から簡単に月末日を生成できます。
AIを使うことによりアプリ構造をシンプルにできるということがメリットですね。
こちらも参考のプロンプトを添えますので、ぜひご利用ください。
プロンプトは以下のように設定します。
%%日付%%は、フィールド名です。
%%日付%%の月末日を出力してください。
出力形式はyyyy-mm-ddで出力すること。
決して文章では出力しないでください。
まとめ
いかがでしたか?
kintoneでは計算式を活用することで日付計算を行うことが可能ですし、プラグインを使うことで計算を簡単に行なったり、計算後の日付を日付フィールドに入力させて通知の条件で使えるようにすることも可能です。
加えてAIを使った日付計算方法もご紹介させていただきました。
M-SOLUTIONSではkintoneを便利にするプラグインや連携サービスを複数提供中です。
日付計算以外でも、kintoneに課題をお持ちでしたら弊社のサービスをお試しください。
合わせて読みたい記事はこちら↓