10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SPSS ModelerのCLEM式でよく使う「日付と時刻」関数

Last updated at Posted at 2020-12-17

SPSS Modeler 18.5に新しい「日付と時刻」関数が追加されました。『ある日付や時刻のxx日後やzz分後を作成したい場合』を更新しました。

SPSS ModelerのCLEM式でよく使う「日付と時刻」の関数を取り上げました。ここでは、SPSS Modeler18.2.2のフィールド作成ノードを使用しています。

ストリームの実行日を基準日として利用したい場合

@TODAY
datetime_now

たとえば、生年月日の情報からストリーム実行時の年齢を得たいとします。
その場合、2種類の関数を使うことができます。
図では、わかりやすいように「実行日_xxx」フィールドを作成していますが、実際にはこのフィールドの作成は不要です。

① @TODAY
image.png
② datetime_now
image.png

得られる結果は同じなのでどちらを使ってもよいのですが、SQLプッシュバック機能を活用する際には、頭文字に@が付く関数はSPSS Modelerの特殊関数のため利用範囲が制限される場合があることから②の利用が推奨されます。

日付や時刻の差を求めたい場合

date_{A}_ difference(DATE1, DATE2) A = years, months, weeks, days
time_{A}_ difference(TIME1, TIME2) A = secs, mins, hours

たとえば、調査開始日(日付1)から終了日(日付2)までの期間を日数で得たいとします。

image.png

日付や時刻を年,月,日や時,分,秒に分解したい場合

datetime_{A}(TIME) A = years, months, days, weekday, secs, mins, hours

たとえば、生年月日から生まれ年、生まれ月、生まれた日に加えて生まれた曜日を得たいとします。

image.png

image.png

※ 生まれた曜日は、1が日曜日です。値ラベルをつけるとよりわかりやすくすることができます。

個別の年,月,日,時,分,秒を日付や時刻に統合したい場合

datetime_date(YEAR, MONTH, DAY)
datetime_time(HOUR, MINUTE, SECOND)
datetime_timestamp(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)
datetime_timestamp(DATE, TIME)

たとえば、生まれ年、生まれ月、生まれた日から生年月日を得たいとします。

image.png

ストレージを日付や時刻に変更したい場合

to_date(ITEM)
to_time(ITEM)
to_datetime(ITEM)
to_timestamp(ITEM)

たとえば、2つの日付情報から期間を得るためにはデータのストレージを日付や時刻、タイムスタンプにしておく必要があります。

0時からの経過時間を求めたい場合

time_in_{A} A = secs, mins, hours

たとえば、0時からの経過時間を分単位で得たいとします。

image.png

2つの日付や時刻を比較して前後を判別したい場合

date_before(DATE1,DATE2)
time_before(TIME1, TIME2)

たとえば、保守継続予定日(日付1)が保守満了日(日付2)より前日かどうかを得たいとします。

image.png

ある日付や時刻のxx日後やzz分後を作成したい場合

たとえば、誕生日から100日後の日付を得たいとします。

v18.5

date_add_{A}(NUM,TIME) A = days,weeks, months, years
date_add_{A}(NUM,TIMESTAMP) A = days,weeks, months, years
time_add_{A}(NUM,TIME) A = seconds, minutes, hours
time_add_{A}(NUM,TIMESTAMP) A = seconds, minutes, hours

image.png

image.png

閏年も加味されて日付が出力されます。

v18.4まで

date_in_{A}(DATE) A = days, months, years
time_in_{A}(TIME) A = secs, mins, hours
datetime_{A}(ITEM) A = date, time, timestamp

この場合、いくつか方法はありますが今回は次の手順で進めます。
①誕生日のストリーム基準日(デフォルト1900年1月1日)からの経過日数を求めます。
image.png
②①で求めた基準日からの経過日数を経過秒数に単位を変えて求めます。
日数×1日:24時間×1時間:60分×1分:60秒
image.png
③②で求めた基準日からの経過秒数を日付に変えます。
image.png
①〜③をまとめて1つの式で表すこともできます。
image.png

<時間の例>
https://www.ibm.com/support/pages/clem%E5%BC%8F%E3%81%A730%E5%88%86%E5%BE%8C%E3%81%AE%E6%99%82%E9%96%93%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

まとめ

よく使う日付と時刻の関数はここまでで、次は文字列関数のご紹介を予定しています。
SPSS Modeler活用にお役立ていただければ幸いです。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?