スクリプトガイド > データタイプ > 日付時間の関数と形式 > 日付時間関数を使用したプログラム
公開日: 09/19/2023

日付時間関数を使用したプログラム

Table 6.2に、秒数を日付時間値に変換するJSL関数と、日付時間値を秒数に変換する関数を示します。

表6.2 日付時間関数

関数

説明

Abbrev Date(date)

指定された日付(date)からOSで指定されているロケールの日付表示を戻す。形式はコンピュータの地域設定に基づきます。英語(米国)ロケールの場合、日付は"02/29/2004"のような形式になります。英語版のJMPを別のロケールで実行している場合も、ロケールの形式が適用されます。

As Date(expression)

指定された数値または式を日付形式または期間で戻す。たとえば、1年以上の期間を表す値は、日付として戻されます。

x = As Date( 8Dec2000 + In Days( 2 ) );

は、次のように表示されます。

10Dec2000

1年未満を表す値は、時間の長さとして戻されます。

As Date( 50000 );

は、次のように表示されます。

:0:13:53:20

Date DMY(day, month, year)

指定された日付を、1904年1月1日午前0時からの秒数で表示する。たとえば、2004年2月29日はDateDMY(29,2,2004)と指定します。これは3160857600を戻します。

Date MDY(month, day, year)

指定された日付を、1904年1月1日午前0時からの秒数で表示する。たとえば、2004年2月29日はDateMDY(2,29,2004)と指定します。これは3160857600を戻します。

Day Of Week(date)

指定された日付(date)が何曜日であるかを表す整数値を戻す。この関数では、週は、日曜日から始まり、土曜日で終わるとみなします。

Day Of Year(date)

指定された日付(date)がその年の何日目であるかを表す整数値を戻す。

Day(date)

指定された日付(date)がその月の何日であるかを表す整数値を戻す。

Format(date, "format")

2番目の引数で指定された形式(format)でを戻す。秒数を日付時間値で表示するときに最もよく使われます。選択できる形式は、「列情報」ダイアログボックスに表示されています。Table 6.3も参照してください。

Hour(datetime)

指定された日付時間値(date-time)の時間を表す整数値を戻す。

In Days(n)

これらの関数はそれぞれ、n分、n時間、n日、n週間、n年を秒で表した値を戻す。秒数で表した時間間隔をこれらの関数で割ると、別の時間単位に変換できます。

In Hours(n)

In Minutes(n)

In Weeks(n)

In Years(n)

Long Date(date)

指定された日付(date)からOSで指定されているロケールの日付表示を戻す。形式はコンピュータの地域設定に基づきます。英語(米国)ロケールの場合、日付は"Sunday, February 29, 2004"のような形式になります。英語版のJMPを別のロケールで実行している場合も、ロケールの形式が適用されます。

MDYHMS(date)

指定された日付(date)から"2/29/04 00:02:20 AM"のような形式の日付表示を戻す。

Minute(date-time)

指定された日付時間値(date-time)の分を表す整数値を戻す。

Month(date)

指定された日付(date)の月を数値で戻す。

Num(date-time)

指定された日付時間値(date-time)を表す整数値を戻す。

InFormat(string, "format")

Parse Date(string, "format")

指定された形式(format)の文字列(string)を解析し、日付時間値を戻す。As Date()と同様に、日付をddMonyyyy形式で戻します。

Second(date-time)

指定された日付時間値(date-time)の秒を表す整数値を戻す。

Short Date(date)

指定された日付(date)をロケールに関係なくMM/DD/YYYYの形式で戻す(たとえば"02/29/2004")。

Time Of Day(date)

指定された日時(date-time)がその日の何秒目かを整数値で戻す。

Today()

1904年1月1日午前0時から現在の日時までの秒数を戻す。引数はとりませんが、括弧は必要です。

Week Of Year(date,
<ルール番号>
)

日付がその年の何週目であるかを戻します。一年の第1週を定義するルールは3つあり、オプションとして指定できます。

ルール1(デフォルト)では、週は日曜日から始まり、年の最初の日曜日が第2週となります。第1週は一部だけの週となるかまたは存在しません。

ルール2では、最初の日曜日が第1週となり、その前にある日は第0週となります。

ルール3は、ISO-8601方式の週番号を戻します。週は月曜日から始まり、その年に入ってからの4日間を含む最初の週が第1週となります。年の最初の3日間または最後の3日間が前年または翌年の週番号に属する場合があります。

Year(date)

指定された日付(date)の年を数値で戻す。

共通の日付時間関数の例

日付時間を戻す関数内では、秒数を戻すすべての関数を使用できます。

たとえば、今日が2011年5月19日の午前11:37:52だとすると、Today()は秒数を戻し、それ以下の関数は基本時間からの秒数を別の日付時間形式で戻します。

Today()

3666955847

Short Date( Today() );

"03/13/2020"

Long Date( Today() );

"2020年3月13日"

Abbrev Date( Today() );

"2020/03/13"

MDYHMS( Today() );

"03/13/2020 2:50:17 PM"

括弧内の日付の引数には、秒数(または秒数を戻す関数)または日付時間のリテラル値を指定できます。たとえば、次の2つの式は同じ値を戻します。

Long Date( 3388649872 );
Long Date( 19May2011 );

"2020年3月13日"

メモ: Long Date()Abbrev Date()の値は、お使いのコンピュータの地域設定に応じて異なります。

日付の一部の抽出

関数Month()Day()Year()Day Of Week()Day Of Year()Week Of Year()Time Of Day()Hour()Minute()Second()を使って、日付値の一部を抽出できます。これらの関数は、すべて整数を戻します。現在日付が2011年5月24日の場合、以下の例はすべて年の144日目を表す144をを戻します。

Day of Year( Today() );
Day of Year( 24May2011 );
Day of Year( Date MDY( 5, 24, 2011 ) );

144

データテーブルの「日付」という名前の列に、"m/d/y"形式の日付時間値が含まれています。ここで、時間だけが含まれる列を作成するとします。次のスクリプトは、2列目の計算式が1列目の「日付」の値から時間を抽出します。

New Table( "Assembly Tests",
	Add Rows( 1 ),
	New Column( "日付",
		Numeric, Continuous,
		Format( "m/d/y" ),
		Set Values( [3389083557] )
	),
	New Column( "時間",
		Numeric, Continuous,
		Formula( Format( Time Of Day( :日付 ), "h:m:s") )
	)
);

Figure 6.1はこの結果です。時間は「日付」列には表示されないことに注意してください。これは、Format関数によって"m/d/y"形式を適用しているためです。

図6.1 時間の抽出の例 

時間の抽出の例

年の週を決定するルール

Week of Year()は、その年の何週目であるかを、日付時間値で戻します。一年の第1週を定義するルールは3つあり、オプションとして指定できます。

ルール1(デフォルト)では、週は日曜日から始まり、年の最初の日曜日が第2週となります。第1週は一部だけの週となるかまたは存在しません。

Week Of Year( Date DMY( 19, 6, 2013 ), 1 );

25

ルール2では、最初の日曜日が第1週となり、その前にある日は第0週となります。

Week Of Year( Date DMY( 19, 6, 2013), 2 ) ;

24

ルール3は、ISO-8601方式の週番号を戻します。週は月曜日から始まり、その年に入ってからの4日間を含む最初の週が第1週となります。年の最初の3日間または最後の3日間が前年または翌年の週番号に属する場合があります。

Week Of Year( Date DMY( 19, 6, 2013 ), 3 );

25

日付の演算

日付時間データは、他の数値データと同じように、算術演算に使用できます。たとえば、日付時間値から数値を引くといった単純な計算ができます。

また、計算式を書いて実行することもできます。

データテーブルの「日付」列に、顧客がクレジットカードを使ってガソリンを購入した日付が入っています。顧客が何日おきにガソリンを購入しているかを知りたいとします。次のスクリプトは「経過日数」列を作成します。その列の計算式は、直前の行の日付値から現在の行の「日付」列の値を引きます。

New Table( "ガソリンの購入",
	Add Rows( 3 ),
	New Column( "日付",
		Numeric,
		"Continuous",
		Format( "m/d/y" ),
		Set Values( [3392323200 3393532800 3394828800] )
	),
	New Column( "経過日数",
		Formula(

// 1行目については欠測値を戻す

			If( Row() == 1,
				.,
				(:日付[Row()] - :日付[Row() - 1]) / In Days()
			)
		)
	)
);

Figure 6.2はこの結果です。

図6.2 日付時間値の計算例 

日付時間値の計算例

時間の間隔

In MinutesIn HoursIn DaysIn WeeksIn Yearsの各関数は、秒以外の単位で時間を表現するときに使用します。これらの関数はすべて、特定の時間間隔を秒数で戻します。たとえば、次の式は、現在から2012年7月4日までの週数を戻します。

(Date DMY( 04, 07, 2012 ) - Today()) / In Weeks();

-208.225444775132

間隔関数の引数が空の場合、間隔は1と見なされます。これを変更するには別の数値を入力します。たとえば、In Years(10)は間隔を10年に変換します。たとえば、次の式は、現在から2037年12月31日までに10年間がいくつ含まれるかを戻します。

(Date DMY( 31, 12, 2037) - Today() ) / In Years( 10 );

2.18927583529799

2桁および4桁の年

JMPは、オペレーティングシステム固有の日付時間形式をサポートするのではなく、独自のアルゴリズムで日付時間値を解釈し、表示します。ただし、日付時間区切りは、「地域と言語」コントロールパネル(Windows)または「日付と時刻」の環境設定(macOS)で選択されているものが使用されます。

2桁年は、現在のシステムクロック年とJMPのルールに従って解釈されます。たとえば、スクリプト内の年が11で、1990年以降にそのスクリプトを実行した場合、年は2011と表示されます。

Long Date( 25May11 );

"2011年5月25日"

曖昧さを回避するには、4桁の年を入力します。次の式は(2011年ではなく)1911年を戻します。

Long Date( 25May1911 );

"1911年5月25日"

Table 6.3に、JMPの2桁年の解釈方法を示します。

表6.3 JMPの2桁年の解釈方法

2桁の年の値

評価する時

結果

結果

00–10

1989年以前(Windows)

19__

1979年に5と入力

1905

1990年以前(macOS)

1990年以降(Windows)

20__

1991年に5と入力

2005

1991年以降(macOS)

11–89(Windows)

いつでも

現在の世紀

1988年に13と入力

1913

11–90(macOS)

2024年に13と入力

2013

90–99(Windows)

2010年以前

19__

1999年に99と入力

1999

91–99(macOS)

2011年以降

20__

2015年に99と入力

2099

メモ: JMPでは、「地域」の設定に関係なく、年が必ず4桁で表示されます。何らかの理由で、2桁で年を表示する必要がある場合は、文字列関数を使ってください。データタイプを参照してください。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).