時刻

TIME 関数は、現地時間を 24 時間表示形式で戻します。デフォルトの形式は、hh:mm:ss (時、分、秒) で、例えば、04:41:37 となります。

構文図を参照するビジュアルシンタックスダイアグラムをスキップする TIME( オプション )
以下のオプションを使用して、別の形式で時刻を表示したり、経過時間クロックにアクセスできるようにしたりすることができます。 大文字だけが必要であり、後続の文字はすべて無視されます。
Civil
常用フォーマットの時刻: hh:mmxx を戻します。 時は 1 から 12 までの値、 分は 00 から 59 までの値になります。 分は、直後に、am または pm という文字が続きます。 これにより、午前中の時刻 (深夜 12 時から午前 11:59 までが 12:00am から 11:59am と表示) と、正午および午後の時刻 (正午 12 時から午後 11:59 までは、12:00pm から 11:59pm と表示) が区別されます。 時間には、 先行ゼロがありません。 分のフィールドは、他の TIME 結果との整合性のために、 現在の分 (最も近い分ではなく) を示します。
Elapsed
sssssssss.uuuuuu を戻します。 この値は、経過時間クロック (後述します) が開始またはリセットされて以降経過した「秒.マイクロ秒」を示す数です。 この数値には、先行ゼロやブランクは含まれず、NUMERIC DIGITS の設定値 の影響は受けません。 小数部の桁数は、常に 6 桁です。
Hours
深夜 12 時以降の時間数を表す最大 2 桁の文字を hh (結果が 0 の とき以外は先行ゼロまたはブランクなし) というフォーマットで戻します。
Long
時間を hh:mm:ss.uuuuuu のフォーマット (uuuuuu は、秒の端数で、 マイクロ秒単位です)。 結果の最初の 8 文字は Normal フォーマットの場合と同じ規則に従い、小数部は 常に 6 桁です。
Minutes
深夜 12 時以降の分数を表す最大 4 文字を mmmm のフォーマットで (結果 が 0 の場合を除いて、先行ゼロまたはブランクなし)。
通常
前述のように、デフォルトの hh:mm:ss というフォーマットで 時刻を戻します。 時間の値は 00 から 23 までの範囲であり、 分および秒の値は 00 から 59 までの範囲です。 これらの値はすべて、常に、2 桁です。 秒数の端数は無視されます (時間は切り上げられません)。 これがデフォルトです
リセット
sssssssss.uuuuuu を戻します。 これは、経過時間クロック (後述します) が開始またはリセットされて以降経過した「秒.マイクロ秒」を示す数であり、経過時間クロックを 0 にリセットします。 この数値には、先行ゼロやブランクは含まれず、NUMERIC DIGITS の設定値 の影響は受けません。 小数部の桁数は、常に 6 桁です。
Seconds
深夜 12 時以降の秒数を示す最大 5 桁の文字を sssss というフォーマットで 戻します (結果が 0 の場合を除いて、先行ゼロまたはブランクなし)。
注意: 1つの節の中でDATEまたはTIMEに最初に呼び出すと、タイムスタンプが作成され、その節内のこれらの関数へのすべての呼び出しで使用されます。 したがって、DATE 関数と TIME 関数のいずれか、あるいはその両方を 1 つの 式または文節内で複数回呼び出しても、相互に必ず整合性が保たれます。

実際の最大値: 経過時間の秒数が 9 桁を超える (31.6 年を超えたことになる) と、エラーになります。

以下の例では、時刻を 4:54 p.m. としています。
TIME()       ->   '16:54:22'
TIME('C')    ->   '4:54pm'
TIME('H')    ->   '16'
TIME('L')    ->   '16:54:22.123456'   /* Perhaps */
TIME('M')    ->   '1014'           /* 54 + 60*16 */
TIME('N')    ->   '16:54:22'
TIME('S')    ->   '60862'  /* 22 + 60*(54+60*16) */

経過時間クロック

TIME 関数を使用して、実 (経過) 時間間隔を測定することができます。 プログラムの最初の呼び出しで TIME('E') または TIME('R') に呼び出すと、経過時間クロックが開始され、いずれの呼び出しも 0 に戻ります。 それ以降、 TIME('E') および TIME('R') への呼び出しは、最初の呼び出しまたは TIME('R') への最後の呼び出しからの経過時間を返します。

クロックは、内部ルーチン呼び出し全体で保管されます。つまり、内部ルーチンは、その呼び出し側が開始した時間クロックを継承します。 内部ルーチンがクロックをリセットしても、呼び出し側が実行するタイミングには影響ありません。 経過時間クロックの例を、以下に示します。
time('E')    ->    0          /* The first call */
/* pause of one second here */
time('E')    ->    1.002345   /* or thereabouts */
/* pause of one second here */
time('R')    ->    2.004690   /* or thereabouts */
/* pause of one second here */
time('R')    ->    1.002345   /* or thereabouts */
注: 一つの節における時間の整合性については、前出の注を参照のこと。 経過時間クロックは、TIME および DATE に対する他の呼び出しと同期されるため、単一文節内で経過時間クロックを複数回呼び出しても、必ず、同じ結果が戻されます。 同じ理由により、通常の TIME/DATE の 2 つの結果の時間間隔を、経過時間クロックを使用して正確に計算することができます。