日付計算:YearName 関数

2019年5月1日からの新元号への対応が始まっています。
ファイルメーカー社様も、FileMaker 17 の新元号への対応を予定より少し早め、
連休前にアップデータをリリースしてくれました。
この連休中にもアップデータをリリースしたりと
新元号対応はシステム関連の企業にとっても一大事ですね。

さて、今回はアップデータのサイトの「参考情報」に書かれていた
「YearName 関数がテキストではなく日付として結果を返す」に注目してみました。

リンク先を見てみると、
「YearName 関数の戻り値から和暦の数字のみを参照する方法」
と書かれたサポートページが表示されます。

このページには2つのことが書かれています。

YearName 関数の戻り値から和暦の数字のみを参照する場合は、形式の引数に 2 を指定し、かつ GetAsNumber 関数に渡す前に結果をテキストに変換します。
FileMaker Pro 17.0.5 Advanced 以降では、YearName 関数に形式引数を 1 にした場合、戻り値で改元の年を「元」で返すように変更されました。

あまり使ったことがない方もいらっしゃるかもしれませんので、、、
(というか私自身、ほとんど使っていないので)
「YearName 関数」について見てみます。

どんな関数なのかというと、ヘルプに以下のように書かれています。
「日付の和暦を指定された書式で返します。」
構文は YearName (日付 ; 形式) となっています。

「形式」では表示形式を示す数字を指定します。
0、1、2の3つの引数が用意されており、以下のように戻り値が変わります。

日付形式が0形式が1形式が2
2019/04/30平成31(平)31H31
2019/05/01令和元(令)元R1
FileMaker Pro 17.0.5 Advanced 以降では、YearName 関数に形式引数を 1 にした場合、戻り値で改元の年を「元」で返すように変更されました。

サポートページの2つ目にかかれていることは、
形式が1の場合の結果を見ると確認できますね。

和暦での年表示については(表示だけのことだったら)
レイアウトモードで設定する「データの書式設定」でも実現できるため、
この関数を和暦での年表示のために使うことはほとんどありませんでしたが、
こういう関数があることは覚えておくといいですね。


次はサポートページの1つ目にかかれていることについてです。

YearName 関数の戻り値から和暦の数字のみを参照する場合は、形式の引数に 2 を指定し、かつ GetAsNumber 関数に渡す前に結果をテキストに変換します。

サポートページの1つ目にかかれていることは、
バージョンによって返ってくる結果がかわってしまうという情報なので注意が必要です。

GetAsNumber 関数は、指定したテキスト中の数字のみを返してくれる関数です。
GetAsNumber ( "H31" ) とすると 31 が返ってきます。

テキストを直接指定している部分に、YearName 関数を使ってH31が返るようにすれば、
GetAsNumber ( YearName ( 日付 ; 2 ) ) としたら、
日付が2019/04/30の場合は 31 が返ってくるように思えます。

FileMaker Pro 17.0.4 Advanced までは、31 が返ってきました。

ところが、
FileMaker Pro 17.0.5 Advanced では、737180 が返ってきます。

FileMaker Pro 17.0.5 Advanced 以降では、
GetAsNumber ( GetAsText ( YearName ( 日付 ; 2 ) ) ) とすれば
31が返ってくるようになります。

※日付の部分は日付タイプのフィールドを指定するか、
 Date関数を利用し、Date ( 4 ; 30 ; 2019 ) のようにして日付を指定してください。

以下の表の日付は2019年4月30日を指定した場合の結果です。

計算式FileMaker Pro 17.0.4 Advanced までFileMaker Pro 17.0.5 Advanced 以降
GetAsNumber ( YearName ( 日付 ; 2 ) )31737179
GetAsNumber ( GetAsText ( YearName ( 日付 ; 2 ) ) )3131

こういう違いがあることも参考情報などに記載がありますので、
バージョンアップの場合はもちろん、アップデータが出た時も情報確認は必要だと、
改めて思いました。

今回もご紹介した内容についてのご質問などはお受けしておりません<(_ _)>

今回は技術的なことというより、仕様のお話なのですが、
お試しになる場合は、ご自身の責任でお試しくださいますようお願いいたします。

それと、相変わらず打たれ弱いので、ツッコミなどはこっそりメールでお願いします。

今回もおつきあいくださいましてありがとうございました。

追記:
現在最新のアップデータ、17.0.7をあてた後に確認したところ、
計算式に「GetAsNumber ( YearName ( 日付 ; 2 ) )」と入れてみてみたら、
「31」の値が返るようになっていました。

投稿者