Analytics 14.1 ヘルプ

式での日付時刻の使用

日付、日付時刻および時刻を計算するために式を使用することができます。

  • 経過日数、経過日数と時間、または経過時間の計算

    例: `20141231` - `20141130` は 2 つの日付間の日数 31 を返します。

  • 日付、日付時刻、または時刻の正または負の調整

    例: `20141231` - 15 は 15 日前の日付 2014 年 12 月 16 日を返します。

  • 日付、日付時刻または時刻の比較

    例: `20141231 183000` > `20141231 171500` は最初の日付が 2 番目の日付より新しいので T(True) を返します。

日付時刻データの操作を支援するために、Analytics はさまざまな有用なタスクを実行する日付と時刻の関数を多数提供しています。日付時刻式を構成するときに、これらの関数を利用できます。

次の表に、日付時刻関数をタスク別にグループ分けして示します。式ビルダーの[関数]ドロップダウン リストを "日付時刻" でフィルターすると、同様の関数の一覧を見ることができます。

実行されるタスク

関数

締切日または現在の日付と比較して、経過日数を返します

AGE( )

指定された月数だけ前または後の日付、月末を計算する

GOMONTH( ), EOMONTH( )

日付の曜日、または月を特定します

CDOW( ), CMOY( )

日付の曜日を表す数値(1 ~ 7)を返します

DOW( )

日付時刻値から日付または時刻を抽出します

DATE( ), TIME( )

日付時刻値から年、月、日、時、分、または秒を抽出します

DAY( ), MONTH( ), YEAR( ), HOUR( ), MINUTE( ), SECOND( )

シリアル日付時刻値、文字日付時刻値、または数値日付時刻値を Datetime データ型の標準の日付時刻値に変換します

STOD( ), STODT( ), STOT( ), CTOD( ), CTODT( ), CTOT( )

現在のオペレーティング システム日付、日付時刻、または時刻を返します

TODAY( ), DATETIME( ), NOW( )

式の中で日付時刻を操作するとき、時間の量と時点を区別することは重要です。この違いによって、異なる種類の式を構築することが要求されます。

時刻値 08:30:00 が指しているのは、時間の量(8 時間 30 分)かもしれないし、時点(午前 8 時 30 分)かもしれません。ある時刻から別の時刻を減算した場合、結果は、時間の量である経過時間となります。例:

STOT(`T083000` - `T071500`)01:15:00(1 時間 15 分 0 秒)を返します

時刻に数値を加算する、または時刻から数値を減算した場合、結果は、最初の時刻より前か後の別の時点を作成する、正または負の調整になります。例:

`T083000` - (1.00000000/24*1.5)07:00:00 AM を返します

時刻の表示書式ツール > オプション > 日付と時刻)は、最初の例では hh:mm:ss で、2 番目の例では hh:mm:ss PM です。どちらの例も、後続のセクションで説明されているシリアル日付時刻の計算を必要とします。

同様に、ある日付から別の日付を減算した場合、結果は、時間の量である経過日数となります。例:

`20141231` - `20141130` は 2 つの日付間の日数 31 を返します

日付に数値を加算する、または日付から数値を減算した場合、結果は、最初の日付より前か後の別の時点になります。例:

`20141231` - 31 は 31 日前の日付 30 Nov 2014 を返します

日付時刻式は、日付時刻サブタイプ(日付、日付時刻、および時刻)と演算子の多くの可能な組み合わせを網羅しています。すべての組み合わせが正当な式であるわけではありません。たとえば、経過日数を調べるために、ある日付から別の日付を引くことはできますが、2 つの日付を足すことはできません。この演算は非論理的だからです。しかし、ある日付に数値を加算して、その後の日付を生成することはできます。

次の規則が日付時刻式に適用されます。

  • 日付、日付時刻、または時刻の値の任意の組み合わせを減算または比較演算で使用することができます。

  • 整数、帯分数、および分数を日付、日付時刻、または時刻の値に対し加算または減算することができます。

  • 日付、日付時刻、または時刻の値を互いに加算することはできません。

    一週間の労働時間などのように時間の量を加算する必要がある場合は、時刻の時、分、および秒の部分を数値として抽出するために、Analytics 関数を使用することができます。それらの数値で計算を実行することができます。

  • 日付、日付時刻、または時刻の値を数値と比較することはできません。

式が有効であっても、必ずしもその式が分析目的に有効にかなうとは限りません。たとえば、Analytics は「終了_日付 > 開始_時刻」という式を処理しますが、結果は常に True(T)となるため、日付と時刻の比較は論理的な目的を果たしません。

次の表は日付時刻式で可能な組み合わせを要約し、各組み合わせが有効か無効であるかを示します。つまり Analytics によって処理できるかどうかを示します。

 

日付値

日付時刻値

時刻値

数値

日付値

有効:

減算

比較

有効:

減算

比較

有効:

減算

比較

有効:

減算

加算

無効:

加算

無効:

加算

無効:

加算

無効:

比較

日付時刻値

有効:

減算

比較

有効:

減算

比較

有効:

減算

比較

有効:

減算

加算

無効:

加算

無効:

加算

無効:

加算

無効:

比較

時刻値

有効:

減算

比較

有効:

減算

比較

有効:

減算

比較

有効:

減算

加算

無効:

加算

無効:

加算

無効:

加算

無効:

比較

日付時刻式によって返される結果のデータ型は、式の中の値や演算子に依存します。

日付時刻式

結果のデータ型

減算(日付時刻値のみ)

減算では、日付、日付時刻、または時刻の値の任意の組み合わせを使用できます

数値

シリアル日付、シリアル日付時刻、またはシリアル時刻

詳細については、シリアル日付時刻を参照してください。

加算または減算(日付時刻値と数値)

整数、帯分数、または分数を日付、日付時刻、または時刻の値に対し加算または減算できます

日付時刻

日付時刻データ型の日付、日付時刻、または時刻サブタイプ

比較(日付時刻値のみ)

比較演算では、日付、日付時刻、または時刻の値の任意の組み合わせを使用できます

論理

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 時間を加減算したりすることができます。日付に正または負の調整を行うことは簡単です。別の日付を基にある日付を算出するために、必要な日数を加算または減算します。

  • `20141231` + 1515 Jan 2015 を返します
  • `20141231` - 1516 Dec 2014 を返します

日付時刻または時刻の値に正または負の調整を行うことはやや複雑です。時刻値どうしや、時刻値を日付時刻値に直接加算することはできません。たとえば、次の式のいずれかを使用して 3 時間の正の調整をしようとする場合、 ‘式の型が一致しません’ エラーが発生します。

  • `t120000` + `t030000`
  • `20141231 235959` + `t030000`

3 時間に相当するシリアル時刻(0.125)を加算することにより、有効な式を作成することができます。しかし、このような式を手作業で作成するには、相当するシリアル時刻を知っている必要があるので不便です。

  • `t120000` + 0.12515:00:00 を返します
  • `20141231 235959` + 0.12501 Jan 2015 02:59:59 を返します

日付時刻または時刻の値に負の調整を行うことの方が簡単ですが、結果はシリアル日付時刻値またはシリアル時刻値になります。この値は、人が読めるように標準の日付時刻値または時刻値に変換する必要があります。

  • `t120000` - `t030000`0.37500000000000 を返します
  • STOT(`t120000` - `t030000`)09:00:00 を返します

次の方法を使用すると、より簡単に日付時刻または時刻に正または負の調整を行うことができます。

  1. 加算または減算したい時間に相当するシリアル時刻を計算する演算フィールドを作成します。

    例:(1.00000000/24*2.5) は、2 時間半に相当するシリアル時刻(0.10416668)を生成します。Analyticsが結果を丸めないように、小数点以下に複数のゼロを持つ '1' を指定する必要があります。(1.00000000/24*1)(1.00000000/24*8)(1.00000000/24*10.25) など、掛ける数字を変えることで、時間の適正な数値を取得することができます。

  2. 同じ演算フィールドで、計算したシリアル時刻をソースの時刻または日付時刻の値に加算する、またはこれらの値から減算します。

    たとえば、<時刻または日付時刻フィールド> + (1.00000000/24*2.5) = フィールド内の値 + 2  時間半になります。

  3. 日付時刻値に対して日と時間の両方の加減算をしたい場合は、計算に適切な日数を含めてください。

    たとえば、<日付時刻フィールド> + 2 + (1.00000000/24*2.5) = フィールド内の値 + 2 日と 2  時間半になります。

以下の表では有効な日付時刻式の例を示します。

メモ

多くの例では、結果はシリアル日付時刻として返されます。つまり、整数または 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 とします

終了_日付時刻 - 開始_日付時刻

終了_日付時刻と開始_日付時刻の間の経過日数と時間をシリアル日付時刻として表現

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 と比較するために時刻値に変換を戻します。