kintoneの標準機能で年齢を自動計算したい
TL;DR
フィールド名 | 種類 | 計算式 | 結果 |
---|---|---|---|
更新日時 | 更新日時 | (自動計算) | 2023-12-22 14:57 |
生年月日 | 日付 | 手動入力/流し込み | 1987-01-01 |
本日日付計算 | 計算 | DATE_FORMAT(更新日時,"YYYYMMdd","Asia/Tokyo") | 20231222 |
生年月日計算 | 計算 | DATE_FORMAT(生年月日,"YYYYMMdd","Asia/Tokyo") | 19870101 |
年齢計算 | 計算 | ROUNDDOWN((本日日付計算-生年月日計算)/10000) | 36 |
年代 | 計算 | ROUNDDOWN(年齢計算/10,0)*10 | 30 |
プラグインだけではうまく行かないことも
年齢計算のプラグインは多々ありますが、レコード更新時のみ計算されてCSV流し込みでは計算されない場合もあります。
kinotneの標準機能の自動計算であれば、CSV流し込みでも計算されるので自動計算で対応したい状況になりました。
開発Tipsでも「経過年数を表示する」の紹介はありますが、レコードに保存するのではなく、画面表示だけです。
ちなみに、kintoneヘルプの「日数や週の計算をするには」でも日付計算方法の紹介がありますが、年齢で計算するには一年の日数で割る必要があり、閏年の日数を考慮する必要があります。
閏年の判定方法は「日付の値に応じて月末日を表示したい(うるう年を考慮した表示)」にありますが、はっきり言ってめんどくさいです。
じゃぁ、計算してみよう
フィールド名 | 種類 | 計算式 | 結果 |
---|---|---|---|
更新日時 | 更新日時 | (自動計算) | 2023-12-22 14:57 |
生年月日 | 日付 | 手動入力/流し込み | 1987-01-01 |
本日日付計算 | 計算 | DATE_FORMAT(更新日時,"YYYYMMdd","Asia/Tokyo") | 20231222 |
生年月日計算 | 計算 | DATE_FORMAT(生年月日,"YYYYMMdd","Asia/Tokyo") | 19870101 |
年齢計算 | 計算 | ROUNDDOWN((本日日付計算-生年月日計算)/10000) | 36 |
年代 | 計算 | ROUNDDOWN(年齢計算/10,0)*10 | 30 |
詰まったところ
- 数値形式(19870928)の日付は日付型に変換できないので、流し込む元データでYYYY/MM/DDにしておく必要があります。
- DATE_FORMAT(更新日時,"YYYYMMdd","Asia/Tokyo")に対して演算はできず、昨日の日付といった計算はできません。
さくっと解説
フィールド名 | 種類 | 計算式 | 結果 |
---|---|---|---|
本日日付計算 | 計算 | DATE_FORMAT(更新日時,"YYYYMMdd","Asia/Tokyo") | 20231222 |
生年月日計算 | 計算 | DATE_FORMAT(生年月日,"YYYYMMdd","Asia/Tokyo") | 19870101 |
生年月日と本日の経過日数を計算するために、数値化する。
フィールド名 | 種類 | 計算式 | 結果 |
---|---|---|---|
年齢計算 | 計算 | ROUNDDOWN((本日日付計算-生年月日計算)/10000) | 36 |
日付数値-生年月日数値の上2桁が年齢に該当する。
上4桁部分の差分が誕生日以降の年齢 x 10000になる。
上4桁で誕生日を迎えた後の年齢計算をし、誕生日を迎えたのかを下4桁で判定する。
誕生日の前日なら下4桁の差分が-1(月またぎならもっと小さい値)になる。
誕生日と同日なら下4桁の差分が0になる。
誕生日の翌日なら下4桁の差分が1(月またぎならもっと大きい値)になる。
結果、閏年を考慮した年齢となる。
フィールド名 | 種類 | 計算式 | 結果 |
---|---|---|---|
年代 | 計算 | ROUNDDOWN(年齢計算/10,0)*10 | 30 |
下1桁を0に丸めて年代にする。