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”、 |
|
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()関数と同じ)。 |