日付、日付時刻および時刻を計算するために式を使用することができます。
- 経過日数、経過日数と時間、または経過時間の計算
例: `20141231` - `20141130` は 2 つの日付間の日数 31 を返します。
- 日付、日付時刻、または時刻の正または負の調整
例: `20141231` - 15 は 15 日前の日付 2014 年 12 月 16 日を返します。
- 日付、日付時刻または時刻の比較
例: `20141231 183000` > `20141231 171500` は最初の日付が 2 番目の日付より新しいので T(True) を返します。
日付および時刻関数
日付時刻データの操作を支援するために、Analytics はさまざまな有用なタスクを実行する日付と時刻の関数を多数提供しています。 日付時刻式を構成するときに、これらの関数を利用できます。
次の表に、日付時刻関数をタスク別にグループ分けして示します。 式ビルダーの[関数]ドロップダウン リストを "日付時刻" でフィルターすると、同様の関数の一覧を見ることができます。
実行されるタスク |
関数 |
---|---|
日付と締切日の間の経過日数(年齢)、現在の日付、または任意の 2 つの日付間の経過日数を返します。 |
|
指定された月数だけ前または後の日付、月末を計算する |
|
日付の曜日、または月を特定します |
|
日付の曜日を表す数値(1 ~ 7)を返します |
|
日付時刻値から日付または時刻を抽出します |
|
日付時刻値から年、月、日、時、分、または秒を抽出します |
|
シリアル日付時刻値、文字日付時刻値、または数値日付時刻値を Datetime データ型の標準の日付時刻値に変換します |
|
現在のオペレーティング システム日付、日付時刻、または時刻を返します |
時間の量と時点
式の中で日付時刻を操作するとき、時間の量と時点を区別することは重要です。この違いによって、異なる種類の式を構築することが要求されます。
時刻
時刻値 08:30:00 が指しているのは、時間の量(8 時間 30 分)かもしれないし、時点(午前 8 時 30 分)かもしれません。
メモ
時刻の表示書式( )は、最初の例では hh:mm:ss で、2 番目の例では hh:mm:ss PM です。 どちらの例も、後続のセクションで説明されているシリアル日付時刻の計算を必要とします。
時間の量
ある時刻から別の時刻を減算した場合、結果は、時間の量である経過時間となります。
01:15:00 を返します
STOT(`T083000` - `T071500`)
時間の時点
時刻に数値を加算する、または時刻から数値を減算した場合、結果は、最初の時刻より前か後の別の時点を作成する、正または負の調整になります。
07:00:00 AM を返します
`T083000` - (1.00000000/24*1.5)
日付
時間の量
ある日付から別の日付を減算した場合、結果は、時間の量である経過日数となります。
2 つの日付間の日数である 31 を返します
`20141231` - `20141130`
時間の時点
日付に数値を加算する、または日付から数値を減算した場合、結果は、最初の日付より前か後の別の時点になります。
31 日前の日付 30 Nov 2014 を返します
`20141231` - 31
有効および無効な日付時刻式
日付時刻式は、日付時刻サブタイプ(日付、日付時刻、および時刻)と演算子の多くの可能な組み合わせを網羅しています。 すべての組み合わせが正当な式であるわけではありません。 たとえば、経過日数を調べるために、ある日付から別の日付を引くことはできますが、2 つの日付を足すことはできません。この演算は非論理的だからです。 しかし、ある日付に数値を加算して、その後の日付を生成することはできます。
次の規則が日付時刻式に適用されます。
-
日付時刻を減算または比較日付、日付時刻、または時刻の値の任意の組み合わせを減算または比較演算で使用することができます。
-
数値および日付時刻を加算または減算整数、帯分数、および分数を日付、日付時刻、または時刻の値に対し加算または減算することができます。
-
日付時刻を加算日付、日付時刻、または時刻の値を互いに加算することはできません。
一週間の労働時間などのように時間の量を加算する必要がある場合は、時刻の時、分、および秒の部分を数値として抽出するために、Analytics 関数を使用することができます。 それらの数値で計算を実行することができます。 詳細については、関数を使った時刻の加算を参照してください。
-
日付時刻および数値を比較日付、日付時刻、または時刻の値を数値と比較することはできません。
次の表は日付時刻式で可能な組み合わせを要約し、各組み合わせが有効か無効であるかを示します。つまり Analytics によって処理できるかどうかを示します。
メモ
式が有効であっても、必ずしもその式が分析目的に有効にかなうとは限りません。 たとえば、Analytics は「終了_日付 > 開始_時刻」という式を処理しますが、結果は常に True(T)となるため、日付と時刻の比較は論理的な目的を果たしません。
|
日付値 |
日付時刻値 |
時刻値 |
数値 |
---|---|---|---|---|
日付値 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 加算 |
無効: 加算 |
無効: 加算 |
無効: 加算 |
無効: 比較 |
|
日付時刻値 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 加算 |
無効: 加算 |
無効: 加算 |
無効: 加算 |
無効: 比較 |
|
時刻値 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 比較 |
有効: 減算 加算 |
無効: 加算 |
無効: 加算 |
無効: 加算 |
無効: 比較 |
日付時刻式によって返されるデータ型
日付時刻式によって返される結果のデータ型は、式の中の値や演算子に依存します。
日付時刻式 |
結果のデータ型 |
---|---|
減算(日付時刻値のみ) 減算では、日付、日付時刻、または時刻の値の任意の組み合わせを使用できます |
数値 シリアル日付、シリアル日付時刻、またはシリアル時刻 詳細については、シリアル日付時刻を参照してください。 |
加算または減算(日付時刻値と数値) 整数、帯分数、または分数を日付、日付時刻、または時刻の値に対し加算または減算できます |
日付時刻 日付時刻データ型の日付、日付時刻、または時刻サブタイプ |
比較(日付時刻値のみ) 比較演算では、日付、日付時刻、または時刻の値の任意の組み合わせを使用できます |
論理 T(True)または F(False) |
日付時刻リテラルの書式
- 日付時刻値 以下の表に示す日付、区切り文字、および時刻の書式を任意に組み合わせて使用することができます。
日付は時間の前に置く必要があり、日付と時刻の間に区切り文字を使用する必要があります。 有効な区切り文字は空白スペース 1 つ、文字 't'、または文字 'T' です。
- 時刻値 24 時間形式を使用して時刻を指定する必要があります
UTC(Coordinated Universal Time:協定世界時)からのオフセットは、プラス記号(+)またはマイナス記号(-)で始める必要があります。
形式の例
リテラル値の例
YYYYMMDD
`20141231`
YYMMDD
`141231`
YYYYMMDD hhmmss
`20141231 235959`
YYMMDDthhmm
`141231t2359`
YYYYMMDDThh
`20141231T23`
YYYYMMDD hhmmss+/-hhmm
(UTC オフセット
`20141231 235959-0500`
YYMMDD hhmm+/-hh
(UTC オフセット)
`141231 2359+01`
thhmmss
`t235959`
Thhmm
`T2359`
メモ
UTC オフセットが設定されているデータのメインの時刻書式で hh を単独で使用しないでください。 たとえば、「hh+hhmm」という使い方は避けてください。 信頼できない結果になる可能性があります。
関数を使った時刻の加算
Analytics では、時刻値どうしを直接加算することはできません。 ただし、Analytics 関数を使用して、時刻の時、分、秒の部分を数値として抽出し、それらの数値で計算を実行することができます。
次の勤務時間記録表(Timesheet)データ例では、時間と分を使用してこのアプローチを説明します。
計算を生成するために、いくつかの演算フィールドが必要となります。
演算フィールドの名前 |
式 |
説明 |
---|---|---|
Elapsed |
STOT(End_Time - Start_Time) |
一日の労働時間を計算する減算操作。 STOT( ) 関数は、計算結果をシリアル時刻値から標準の時刻値に変換します。 |
Hours |
HOUR(Elapsed) |
時の部分を Elapsed 値から数値として抽出します。 |
Minutes |
MINUTE(Elapsed) |
分の部分を Elapsed 値から数値として抽出します。 (表示目的です。 計算には必要ありません。) |
Part Hours |
MINUTE(Elapsed)/60.000 |
分の部分を Elapsed 値から数値として抽出し、60 分の小数部として計算します。 |
Hours+Part Hours |
Hours + Part_Hours |
Hours と Part Hours の数値を加算します。 |
最後のステップとして、一週間の合計時間を計算するために、Hours+Part Hours フィールドを合計します。
日付、日付時刻、または時刻の正または負の調整
日付、日付時刻、または時刻の値に正または負の調整を行うことができます。たとえば、15 日を加減算したり、3 時間を加減算したりすることができます。
日付に正負の調整を行う
日付に正または負の調整を行うことは簡単です。 別の日付を基にある日付を算出するために、必要な日数を加算または減算します。
15 Jan 2015 を返します。
`20141231` + 15
16 Dec 2014 を返します。
`20141231` - 15
日付時刻または時刻に正負の調整を行う
日付に調整を行うよりも、日付時刻または時刻の値に正または負の調整を行うことはやや複雑です。
時刻値どうしや、時刻値を日付時刻値に直接加算することはできません。 たとえば、次の式のいずれかを使用して 3 時間の正の調整をしようとする場合、エラーが発生します。
式の型が一致しませんエラーを返します。
`t120000` + `t030000`
式の型が一致しませんエラーを返します。
`20141231 235959` + `t030000`
シリアル時刻相当値を使用して正の調整を行う
3 時間に相当するシリアル時刻(0.125)を加算することにより、有効な式を作成することができます。しかし、このような式を手作業で作成するには、相当するシリアル時刻を知っている必要があるので不便です。
15:00:00 を返します。
`t120000` + 0.125
01 Jan 2015 02:59:59 を返します。
`20141231 235959` + 0.125
シリアル日付時刻または時刻結果で負の調整を行う
日付時刻または時刻の値に負の調整を行うことの方が簡単ですが、結果はシリアル日付時刻値またはシリアル時刻値になります。この値は、人が読めるように標準の日付時刻値または時刻値に変換する必要があります。
0.37500000000000 を返します。
`t120000` - `t030000`
09:00:00 を返します。
STOT(`t120000` - `t030000`)
演算フィールドを作成して、より簡単に正負の調整を行う
次の方法を使用すると、より簡単に日付時刻または時刻に正または負の調整を行うことができます。
- 加算または減算したい時間に相当するシリアル時刻を計算する演算フィールドを作成します。
0.10416668 を返します。これは 2-1/2 時間に相当するシリアル時刻です。
(1.00000000/24*2.5)
Analyticsが結果を丸めないように、小数点以下に複数のゼロを持つ '1' を指定する必要があります。
(1.00000000/24*1)、(1.00000000/24*8) 、(1.00000000/24*10.25) など、掛ける数字を変えることで、時間の適正な数値を取得することができます。
- 同じ演算フィールドで、計算したシリアル時刻をソースの時刻または日付時刻の値に加算する、またはこれらの値から減算します。
フィールドの値 + 2-1/2 時間を返します。
<時刻または日付時刻フィールド> + (1.00000000/24*2.5)
- 日付時刻値に対して日と時間の両方の加減算をしたい場合は、計算に適切な日数を含めてください。
フィールドの値 + 2 日 2-1/2 時間を返します。
<日付時刻フィールド> + 2 + (1.00000000/24*2.5)
日付時刻式の例
以下の表では有効な日付時刻式の例を示します。
メモ
多くの例では、結果はシリアル日付時刻として返されます。つまり、整数または 24 時間の小数部分で表される日付、日付時刻、または時刻の値です。
シリアル日付時刻の戻り値を標準の日付時刻の値に変換するために、STOD( )、STODT( )、および STOT( ) 関数を使用できます。 詳細については、シリアル日付時刻を参照してください。
経過日数、日数と時間、または時間の計算
式 |
結果 |
---|---|
`20141231` - `20141130` |
31 2 つの日付間の経過日数 |
終了_日付 - 開始_日付 |
終了_日付と開始_日付の間の経過日数 |
`20141231 235959` - `20141130 114530` |
31.51005787037037 2 つの日付時刻間の経過日数と時間をシリアル時刻として表現 |
STRING(INT(`20141231 235959` - `20141130 114530`),5) + " " + TIME(STOT(MOD(`20141231 235959` - `20141130 114530`, 1))) |
31 12:14:29 上記の例の 2 つの日付時刻間の経過日数と時間を日、時、分、秒として表現 現在の Analytics の時刻表示書式は hh:mm:ss とします |
(`20141231 235959` - `20141130 114530`) * 24 |
756.24138888888888 上記の例の 2 つの日付時刻の間の経過時間は、時間と時間の小数部分として表現されます。 |
終了_日付時刻 - 開始_日付時刻 |
終了_日付時刻と開始_日付時刻の間の経過日数と時間をシリアル時刻として表現 |
STRING(INT(終了_日付時刻 - 開始_日付時刻), 5) + " " + TIME(STOT(MOD(終了_日付時刻 - 開始_日付時刻, 1))) |
終了_日付時刻と開始_日付時刻の間の経過日数と時間を日、時、分、秒として表現 |
`T235959` - `T114530` |
0.51005787037037 2 つの時刻間の経過時間をシリアル時刻として表現 |
STOT(0.51005787037037) |
12:14:29 上記の例のシリアル時刻が、現在の Analytics の時刻表示書式を使用して時刻値に変換されます。 |
STOT(`T235959` - `T114530`) |
12:14:29 2 つの時刻間の経過時間を現在の Analytics の時刻の表示書式を使用して時刻として表現 |
終了_時刻 - 開始_時刻 |
終了_時刻と開始_時刻の間の経過時間をシリアル時刻として表現 |
日付、日付時刻、または時刻の正または負の調整
式 |
結果 |
---|---|
支払_期日 + 15 |
支払_期日フィールドの値を 15 日増加 |
`20141231` - 15 |
16 Dec 2014 日付を 15 日減少。 現在の Analyticsの日付表示書式は DD MMM YYYY とします |
`20141231 235959` + (1.00000000/24*1.5) |
01 Jan 2015 01:29:59 日付時刻 + 1.5 時間 |
`20141231 235959` - (1.00000000/24*1.5) |
31 Dec 2014 22:29:59 日付時刻 - 1.5 時間 |
STODT(`20141231 235959` - `T013000`) |
31 Dec 2014 22:29:59 日付時刻 - 1.5 時間 |
`20141231 235959` + 2 + (1.00000000/24*1.5) |
03 Jan 2015 01:29:59 日付時刻 + 2 日と 1.5 時間 |
`20141231 235959` - 2 - (1.00000000/24*1.5) |
29 Dec 2014 22:29:59 日付時刻 - 2 日と 1.5 時間 |
`t235959` + (1.00000000/24*1.5) |
01:29:59 時刻 + 1.5 時間 |
`T173000` - (1.00000000/24*1.5) |
16:00:00 時刻 - 1.5 時間 |
STOT(`T173000` - `T013000`) |
16:00:00 時刻 - 1.5 時間 |
STOT(STOT(`T173000` - `T013000`) - `T010000`) |
15:00:00 時刻 - 1.5 時間 - さらに 1 時間 |
日付、日付時刻または時刻の比較
式 |
結果 |
---|---|
`20141231` > `20141230` |
T (True) |
支払_期日 <= `20141231` |
2014 年 12 月 31 日以前の支払_期日フィールドのすべての値 |
支払_日付 > 支払_期日 |
支払_期日を過ぎた支払_日付フィールドのすべての値 |
CTOD(DATE(支払_日時, "YYYYMMDD"), "YYYYMMDD") > 支払_期日 |
支払_期日を過ぎた支払_日時フィールドのすべての値 日付時刻と日付の値を比較するには、まず、支払_日時フィールドの日付時刻値から日付を文字値として抽出し、その後、それを支払_期日と比較するために日付値に変換を戻します。 日付の書式が一致していることを保証するために、同一の書式が、DATE( ) 書式パラメータ(出力書式)と CTOD( ) 書式パラメータ(入力書式)に指定されています。 |
ログイン_時刻 > `t100000` |
10:00:00 より遅いログイン_時刻フィールドのすべての値 |
変換関数を使用する日付時刻式
式 |
結果 |
---|---|
STOT(CTOT("t120000") - CTOT("t090000") ) |
03:00:00 2 つの文字時間値の間の経過時間 まず、減算操作で使用できるように、文字時刻値が標準の時刻値に変換されます。 その後、減算操作の計算結果である数値のシリアル時刻が標準の時刻値に変換されます。 |
CTOT(TIME(`20141231 125959`)) < `T235959` |
T (True) まず、日付時刻値から時刻を文字値として抽出し、その後、それを 23:59:59 と比較するために時刻値に変換を戻します。 |