メインコンテンツまでスキップ
に最終更新

NANOSECONDS_DIFF

説明​

二つの日時値の差をナノ秒単位で返します。計算結果は <end_time> - <start_time> です。

構文​

NANOSECONDS_DIFF(<end_time>, <start_time>)

パラメータ​

パラメータ説明
<end_time>終了日時。少なくとも一方の引数は TIMESTAMP_NS である必要があり、もう一方には TIMESTAMP_NS または DATETIME を指定できます。
<start_time>開始日時。少なくとも一方の引数は TIMESTAMP_NS である必要があり、もう一方には TIMESTAMP_NS または DATETIME を指定できます。

戻り値​

BIGINT を返し、ナノ秒単位の <end_time> - <start_time> を表します。いずれかの引数が NULL の場合は NULL を返します。

結果が正の場合、終了日時は開始日時より後です。負の場合、終了日時は開始日時より前です。結果は BIGINT の範囲内に収まる必要があり、範囲を超えるとオーバーフローエラーが報告されます。

例​

SELECT NANOSECONDS_DIFF(
CAST('1970-01-01 00:00:00.000000001' AS TIMESTAMP_NS),
CAST('1969-12-31 23:59:59.999999999' AS TIMESTAMP_NS)
) AS diff;
+------+
| diff |
+------+
| 2 |
+------+

引数には TIMESTAMP_NS と DATETIME を組み合わせて使用できます。

SELECT NANOSECONDS_DIFF(
CAST('1970-01-01 00:00:00.000000001' AS TIMESTAMP_NS),
CAST('1970-01-01 00:00:00.000000' AS DATETIME(6))
) AS diff;
+------+
| diff |
+------+
| 1 |
+------+
SELECT NANOSECONDS_DIFF(
CAST(NULL AS TIMESTAMP_NS),
CAST('1970-01-01 00:00:00.000000000' AS TIMESTAMP_NS)
) AS diff;
+------+
| diff |
+------+
| NULL |
+------+