MariaDBでは、TIMESTAMPDIFF()
は、2つの日時式の差を返す組み込みの日時関数です。
構文
構文は次のようになります:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
unit
は次のいずれかの値です:
-
MICROSECOND
-
SECOND
-
MINUTE
-
HOUR
-
DAY
WEEK
-
MONTH
-
QUARTER
-
YEAR
ユニットには、オプションでSQL_TSI_
のプレフィックスを付けることができます。 。
TIMESTAMPDIFF()
datetime_expr2
を返します – datetime_expr1
。
1つの式は日付で、もう1つの式は日時です。日付値は、00:00:00
の時間部分を持つものとして扱われます 必要に応じて。
例
デモンストレーションの例を次に示します。
SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');
結果:
+------------------------------------------------+ | TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01') | +------------------------------------------------+ | 28 | +------------------------------------------------+
否定的な結果
日付を切り替えると、否定的な結果が得られます:
SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');
結果:
+------------------------------------------------+ | TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01') | +------------------------------------------------+ | -28 | +------------------------------------------------+
日時の値
日時の値を渡す例は次のとおりです。
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01 00:00:00',
'2030-02-01 12:30:45'
)
AS Result;
結果:
+--------+ | Result | +--------+ | 12 | +--------+
HOUR
を指定しました 、したがって、分と秒の部分は無視されます。
混合タイプ
日付と日時の両方の値を渡す例を次に示します。
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01',
'2030-02-01 12:30:45'
)
AS Result;
結果:
+--------+ | Result | +--------+ | 12 | +--------+
前述のように、日付値は00:00:00
の時間部分を持つものとして扱われます 。
SQL_TSI_
の追加 プレフィックス
ユニットにはSQL_TSI_
を含めることができます 必要に応じてプレフィックス:
SELECT TIMESTAMPDIFF(
SQL_TSI_YEAR,
'2030-02-01',
'2035-02-01'
)
AS Result;
結果:
+--------+ | Result | +--------+ | 5 | +--------+
マイクロ秒
マイクロ秒を返す例を次に示します。
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45.000000',
'2030-02-01 10:30:45.123456'
)
AS Result;
結果:
+--------+ | Result | +--------+ | 123456 | +--------+
日時の値にマイクロ秒が実際に指定されていないものは次のとおりです。
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45',
'2030-02-01 12:30:45'
)
AS Result;
結果:
+------------+ | Result | +------------+ | 7200000000 | +------------+
現在の日付
NOW()
を渡すことができます 現在の日付と時刻を別の日付と比較するための日時引数の1つ:
SELECT
NOW(),
TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;
結果:
+---------------------+------+ | NOW() | Diff | +---------------------+------+ | 2021-05-30 09:29:01 | -60 | +---------------------+------+
ヌル日付
日付の1つがnull
の場合 、結果はnull
です :
SELECT TIMESTAMPDIFF(
YEAR,
'2030-02-01',
NULL
)
AS Result;
結果:
+--------+ | Result | +--------+ | NULL | +--------+
引数がありません
TIMESTAMPDIFF()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT TIMESTAMPDIFF();
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
そして別の例:
SELECT TIMESTAMPDIFF('2020-12-09');
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1