入社日と退社日を含む月をそれぞれ1カ月として勤続年数を求めるには

[Access 2016/2013/2010/2007]

「入社日が属する月」から「退社日が属する月」までを勤続年月として求めます(図1)。例えば、「2017/4/1入社、2017/6/30日退社」の人も、「2017年4/10入社、2017/6/10退社」の人も、勤続年月は「0年3カ月」とみなします。

図1 [入社日]フィールドと[退社日]フィールドから勤続年月を求める。

スポンサーリンク

手順ダイジェスト

勤続月: DateDiff("m",[入社日],[退社日])+1

勤続年月: [勤続月]¥12 & "年" & [勤続月] Mod 12 & "カ月"

手順解説

Step1 DateDiff関数で勤続月数を求める

Accessで2つの日時の間隔を求めるにはDateDiff関数を使用します(構文1、正式な構文はDateDiff関数のページを参照してください)。

構文1 2つの日時の間隔を求める
DateDiff(単位, 日時1, 日時2)

引数[単位]に「"m"」を指定すると、月単位の間隔が求められます。といっても「満」の月数が求められるわけではありません。[日時1]と[日時2]の間の月をまたいだ回数が求められるのです(図2)。

図2 「4/1」~「6/30」は月を2回またぐので「DateDiff("m",#2017/04/01#,#2017/06/30#)」の結果は「2」になる。

したがって、DateDiff関数で求めた月数に「1」を加算すれば、「入社日が属する月」から「退社日が属する月」までの勤続月数が求められます(式1図3図4)。

式1 入社月と退社月をそれぞれ1カ月在籍とみなして勤続月数を求める
勤続月: DateDiff("m",[入社日],[退社日])+1

図3 クエリの[フィールド]欄に式1を入力する。

図4 「入社日が属する月」から「退社日が属する月」までの勤続月数が求められた。

Step2 勤続月をもとに勤続年月を求める

勤続月がわかったら、あとは簡単。「¥」演算子と「Mod」演算子を使用して、勤続月を年数と月数に分解します。「¥」演算子は割り算の答えの整数部分を、「Mod」演算子は割り算の答えの余りを求める演算子です。例えば、「9 ÷ 4 = 2 余り 1」なので、「9 ¥ 4」の結果は「2」、「9 Mod 4」の結果は「1」となります。

数値1 ¥ 数値2 : 数値1を数値2で割った答えの整数部分を求める

数値1 Mod 数値2 : 数値1を数値2で割った答えの余りを求める

[勤続月]フィールドの数値を「〇年〇カ月」の形式で表示するには、式2のように式を立てます(図5図6)。

式2 入社月と退社月をそれぞれ1カ月在籍と見なして勤続年月数を求める
勤続年月: [勤続月]¥12 & "年" & [勤続月] Mod 12 & "カ月"

図5 クエリの[フィールド]欄に式2を入力する。

図6 勤続年月が求められた。

なお、ここでは勤続年月を求めるための下準備として[勤続月]フィールドを用意しましたが、式3のように式を立てれば1つの式で勤続年月を求められます。

式3 入社月と退社月をそれぞれ1カ月在籍と見なして勤続年月数を求める
勤続年月: (DateDiff("m",[入社日],[退社日])+1)¥12 & "年" & (DateDiff("m",[入社日],[退社日])+1) Mod 12 & "カ月"

スポンサーリンク

関連記事