コンテンツにスキップ

日付列の加算/減算

日付に一定の期間を足したり引いたりします。受注日の 30 日後を納期にする、基準日から 1 年前を出す、といった使い方をします。

入出力

ポート内容
入力データデータ
出力データ計算結果の列を加えたデータ

Spark エンジンでも動きます。

行の数と並び順は変わりません。新規列に挿入を選ぶと列がいちばん右に 1 つ増え、元の日付列はそのまま残ります。既存列に上書きを選ぶと列は増えず、選んだ日付列の値が書き換わります。出力の型は元の列と同じ(日付型なら日付型、日付時間型なら日付時間型、時間型なら時間型)です。

設定項目

フォームの見出しの並び — 「処理対象列を選択」 → 「詳細設定」。条件によって出ない見出しもあります。

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。上書きを選んだときは、下の「日付列を選択」で選んだ列がそのまま書き換わります。上書き用の列を別に選ぶ欄はありません。
新規列名を入力必須
「新規列に挿入」のときに出ます。すでにある列と同じ名前にするとエラーになります。
日付列を選択必須
足し引きの対象。日付型・日付時間型・時間型の列だけ選べます。
演算子を設定
+(加算)(既定)か -(減算)。
日付要素選択 / 演算対象要素選択
足し引きする単位。選んだ列の型によって選択肢が変わります(列の型で変わる単位)。見出しも型で変わり、日付型では「日付要素選択」、日付時間型と時間型では「演算対象要素選択」になります。
既存列を参照して演算する
既定は off。on にすると、全行に同じ数を足すのではなく、行ごとに別の数値列の値を足し引きします。
数値を入力必須
「既存列を参照して演算する」が off のときに出ます。単位が「秒」のときだけ小数を入れられ、それ以外の単位では整数だけです。
数値列を選択必須
「既存列を参照して演算する」が on のときに出ます。数値型の列だけ選べます。小数が入っていると小数点以下は捨てられます(1.9 は 1、-1.9 は -1)。
欠損値を置換して演算する
「オプション」の中にあり、「既存列を参照して演算する」が on のときに出ます。参照する数値列が空欄の行で、代わりに使う数。指定しないと、その行の結果は空欄になります。

列の型で変わる単位

列の型選べる単位最初に選ばれているもの
日付年 / 月 / 日年
日付時間年 / 月 / 日 / 時 / 分 / 秒年
時間時 / 分 / 秒時

月や年を足したときの日

日はそのまま維持されます。 ただし足した先の月に同じ日がないときは、その月の最終日になります。

元の日付設定結果
2024-01-31+ 1 月2024-02-29
2024-03-31+ 1 月2024-04-30
2024-02-29+ 1 年2025-02-28

毎月の最終日を出したいときは、足したあとで日付要素の切り出しの「月末」を当ててください。

時間型は 24 時でひと回りする

時間型の列は日付を持たないため、24 時を越えた分は翌日に送られず、先頭に戻ります。

元の時間設定結果
23:30:00+ 2 時01:30:00
01:00:00- 2 時23:00:00

日をまたぐ計算が必要なときは、日付時間型の列を対象にしてください。

空欄があるとき

空欄になっている場所結果
対象の日付列その行の結果は空欄
参照する数値列(「欠損値を置換して演算する」を指定していない)その行の結果は空欄
参照する数値列(「欠損値を置換して演算する」に数を入れた)その数を足し引きした値

エラーと対処

対象の列が選択されていない

日付列・数値列のどちらかが空のまま実行したとき。

対象の列が選択されていません。

直し方 — 列を選んでから実行してください。

対象の列が見つからない

前の処理で列名が変わった、または列が消えたとき。

対象の列が存在しません。

直し方 — 列を選び直してください。

新規列名が既にある

「新規列に挿入」で、すでにある列と同じ名前を入れたとき。

新規列名({{new_col}})が既存の列名と重複しています。

直し方 — 別の名前にするか、「既存列に上書き」に切り替えてください。

参照する列が数値でない

「既存列を参照して演算する」で、数値型でない列を選んだとき。

列: {{add_colname}}は数値型では無いため計算に利用できません。列の型変更で数値型に変換してください。

直し方 — 列の型変更で数値型にしてください。

扱える範囲を超えた

足し引きした結果が、扱える日付の範囲から出たとき。

加算/減算する値が大きすぎるためnehanで扱える日付時間の範囲を超えました。値を小さくして実行してください。

直し方 — 足し引きする数を小さくしてください。扱える範囲は日付型が 1677-09-22 〜 2262-04-11、日付時間型が 1677-09-21 00:12:44 〜 2262-04-11 23:47:16 です。

元のデータに範囲外の日付がある

計算する前から、扱える範囲の外の日付が入っていたとき。

nehanで扱える範囲の外の日付が含まれています。 ・日付型: 1677-09-22 ~ 2262-04-11 ・日付時間型: 1677-09-21 00:12:44 ~ 2262-04-11 23:47:16 対象の列に範囲外のデータがある場合は範囲内に収まるように変換してください。

直し方 — 入力のデータに 9999-12-31 のような値が入っていないか確かめてください。

よく使う例

1. 30 日後を納期にする

お題 — 受注日の 30 日後を納期にしたい

入力

受注日
2024-04-01
2024-04-20

設定

設定項目値
結果の挿入先を設定新規列に挿入
新規列名を入力納期
日付列を選択受注日
演算子を設定+(加算)
日付要素選択日
数値を入力30

出力 — 納期 が日付型で増えます(2024-05-01 / 2024-05-20)。

2. 前年の同じ日を出す

お題 — 前年同日の売上と並べて比べたい

入力 — 売上日(日付型)が入ったデータ

設定

設定項目値
新規列名を入力前年同日
日付列を選択売上日
演算子を設定-(減算)
日付要素選択年
数値を入力1

出力 — 2024-05-10 なら 2023-05-10。この列をキーにしてキー列を指定する結合でつなげば、前年の値を横に並べられます。

3. 商品ごとに違う日数を足す

お題 — 商品によってリードタイムが違うので、行ごとに足す日数を変えたい

入力

受注日リードタイム
2024-04-013
2024-04-0110

設定

設定項目値
新規列名を入力納期
日付列を選択受注日
日付要素選択日
既存列を参照して演算するon
数値列を選択リードタイム

出力 — 2024-04-04 / 2024-04-11。

4. リードタイムが空欄の行も計算する

お題 — リードタイムが未入力の行は、当日出荷として扱いたい

入力

受注日リードタイム
2024-04-013
2024-04-01(空欄)

設定 — 例 3 に加えて、「オプション」の中の「欠損値を置換して演算する」に 0 を入れます。

出力 — 2024-04-04 / 2024-04-01。入れないと 2 行目は空欄のままです。

5. 記録時刻を 1 時間ずらす

お題 — 別の地域の時刻に合わせて、記録時刻を 1 時間後にしたい

入力 — アクセス日時(日付時間型)

設定

設定項目値
結果の挿入先を設定既存列に上書き
日付列を選択アクセス日時
演算子を設定+(加算)
演算対象要素選択時
数値を入力1

出力 — アクセス日時 がそのまま書き換わります(2024-04-01 23:30 → 2024-04-02 00:30)。日付時間型なので日をまたいでも繰り上がります。

関連