公開日: 11/25/2021

SQLの日付時間関数

JMPのクエリーで日付時間関数を使用する場合は、SQLエンジン(SQLite)とJMPの日付格納形式が異なるため、注意が必要です。SQLiteは、日付時間値を文字列として格納しますが、JMPは、1904年1月1日からの秒数で格納します。テーブルに日付時間値の列がある場合は、この変換は自動的に行われますが、日付時間値を戻す関数を使用した場合は、必要に応じてJMPで変換する必要があります。

CURRENT_TIMESTAMP関数を例にとって説明します。CURRENT_TIMESTAMPはビルトインのSQLite関数で、現在の日時(UTC/GMT)をSQLiteの日付時間文字列として戻します。

Query( Scalar, "SELECT CURRENT_TIMESTAMP;" );

この式は、次の値を戻します。

"2016-02-16 15:44:42"

この文字列を解析し、JMPの日付時間値として戻すこともできますが、その手間を省くためには、以下のようにCURRENT_TIMESTAMP関数をJMPDATE()関数に挿入します。

Query( Scalar, "SELECT JMPDATE( CURRENT_TIMESTAMP );" );

この式は、次の値を戻します。

3538482531

これは、JMPの日付時間値(表示形式を設定していない状態)です。SQLiteの日付時間文字列を、別のSQL日付時間関数に渡す場合は、自動的にJMPの日付時間値に変換されるので、JMPDate()を使用する必要はありません。以下はその例です。

Query( Scalar, "SELECT EXTRACT(’YEAR’, CURRENT_TIMESTAMP);" );

SQLiteネイティブの日付時間関数(date()time()datetime()julianday()strftime())は、JMPの日付時間値と互換でないため、JMPクエリーではこれらの関数を使用しないでください。

日付時間関数

SQLite
ネイティブ

説明

CURRENT_DATE

現在の日付(UTC/GMT)を、SQLiteの日付時間文字列として戻す。

CURRENT_TIME

現在の時間(UTC/GMT)を、SQLiteの日付時間文字列として戻す。

CURRENT_TIMESTAMP

現在の日時(UTC/GMT)を、SQLiteの日付時間文字列として戻す。

DATEDIFF( date1, date2, interval, <alignment = “Start”> )

2つの日付の差を計算する(単位をinterval、基準をalignmentで指定する)。この関数は、JSL関数のDate Difference()と同じように動作します。intervalには、“Year”、“Quarter”、“Month”、“Week”、“Day”、“Hour”、“Minute”、“Second”のいずれかを指定できます。alignmentには、“Start”、“Actual”、または“Fractional”を指定できます。alignmentが指定されていない場合、"Start"が使用されます。

EXTRACT( datepart, datetime, <use_locale = 1> )

日付値または日付時間値の一部を抽出する。datetimeには、JMPの日付時間値か、SQLiteの日付時間文字列を指定できます。use_locale(オプション)は、日付時間値の一部を名前で戻す関数において(月名("MonthName")や曜日("DayName")など)、現在の言語と英語のどちらを使用するかを指定します。datepartには、以下の値を指定できます。

"Year"

年を数字で戻す。

"Month"

月を数字で戻す(1-12)。

"MonthName"

月名を、現在の言語(use_locale = 1)または英語(use_locale = 0)で戻す。

"Mon", "MMM"

月名を略称で戻す。

"Day"

日にち(月単位)を戻す(1-31)。

"DayName"

曜日を戻す。

"DayOfWeek"

曜日を数字で戻す(1-7)。

"DayOfYear"

日にち(年単位)を戻す(1-366)。

"Quarter"

四半期の値を戻す(1-4)。

"Hour"

時間を戻す(0-23)。

"Minute"

分を戻す(0-59)。

"Second"

秒を戻す(小数点を含む)。

"Date"

日付の部分だけ抽出して、JMPの日付時間値として戻す。

"Time"

時間の部分だけ抽出して、JMPの日付時間値として戻す。

JMPDATE( SQLite time string )

SQLiteの日付時間文字列を、JMPの日付時間値に変換する。

NOW()

TODAY()と同じ。

TODAY()

現在のJMP日付時間値をローカルの時間で戻す(JMPのToday()関数と同じ)。

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