2つの日付の間の日数を求めたい

2つの日付列の日付の差の日数を計算し、計算結果の列を追加します。ExcelのDAYS関数に相当する機能です。

説明

データにある2つの日付の値の間の日数を求めたい場合があります。 MSIPでは 列追加アイコンを使用することで、日数を計算することができます。 ExcelのDAYS関数に相当する機能です。

例えば、以下のようにデータに日付型の値が格納された「日付1」と「日付2」の列があるとします。ただし、ここでは「日付2」の方が「日付1」よりも先の日付となっているとします。
この各行に対して、「日付2」 - 「日付1」を計算し、「日数」列に計算した値を格納します。

2つの日付間の日数

使い方

テーブルデータに、日付型の日付1日付2の列があるとします。

  1. データに列追加アイコンを接続します。
  2. パラメータ設定画面を開き、「追加する列名」に新しい列名「日数」を入力します。
  3. 「計算式」に(table["日付2"] - table["日付1"]).get_total_seconds()/60/60/24 を入力します。get_total_seconds()は、日付型または日時型同士を引き算した結果を秒数で返す関数です。

列追加アイコン設定画面

  1. アイコンを実行すると、「日数」列が追加された結果が出力されます。

なお、このままだと、日数の列が実数型になるため、小数点表示されてしまいます。
そこで、日数の列を整数型に変更します。

  1. 列追加アイコン列属性変更アイコンを接続します。
  2. パラメータ設定画面を開き、「日数」列にチェックを入れます。
  3. 「新列型」をintegerにします。

列属性変更アイコン設定画面

  1. アイコンを実行すると、「日数」列の型が整数型になった結果が出力されます。

OnePoint

ここでは、異なる年の間の日数も求められるように、列追加アイコンget_total_seconds()を使用しました。
ですが、求める日数が同一年内の場合は、日時情報アイコンでも日数を求めることができます。

日時情報アイコンでは、1月1日からの経過日数(年日数)を求めることができるので、日付1日付2の年日数の差を計算します。

フローは以下のとおりです。

フロー

  1. データに日時情報アイコンを接続します。(フローの日時情報1)
  2. パラメータ設定画面を開き、「対象列」に日付1を指定し、出力項目の年日数にチェックを入れます。

日時情報1設定画面

  1. アイコンを実行すると、「年日数」列に1月1日から数えた日付1の日数が追加された結果が出力されます。

続いて、同様の処理を日付2に対してもおこないます。(フローの日時情報2)
ただし、ここでは設定画面で「元データ出力」のチェックをはずしておきます。

これで、日付1日付2の年日数が求まったので、引き算をするためにひとつのテーブルにまとめます。

  1. 日時情報1から列結合アイコンを接続します。
  2. 日時情報2から、上記の列結合アイコンに接続リンクを繋ぎます。
  3. 列結合アイコンを実行すると、日時情報1の結果と日時情報2の結果が列方向に結合されます。

ここで、同じ年日数という名前の列を結合したため、日付2の年日数が自動的に1.年日数という名前に変更されていることに注意してください。

列結合結果

ここまで来れば、最後に日付2の年日数から日付1の年日数を引くだけです。

  1. 列結合アイコン列追加アイコンを接続します。
  2. パラメータ設定画面で「追加する列名」に「日数」を入力します。
  3. 「計算式」にtable["1.年日数"] - table["年日数"]を入力します。ここで1.年日数の列は、日付2の年日数です。

同一年内の列追加設定画面

  1. 実行すると、日付1日付2の間の日数が追加された結果が出力されます。

同一年内の2つの日付間の日数

関連項目