メインコンテンツまでスキップ
バージョン: 26.x

TIME_TO_SEC

説明

TIME_TO_SEC関数は、入力された時間値を総秒数に変換します。この関数はTIME型とDATETIME型の処理をサポートします:入力がDATETIME型の場合、計算のために自動的に時間部分(HH:MM:SS)を抽出します;入力が純粋な時間値の場合、直接総秒数に変換します。

この関数は、MySQLのtime_to_sec functionと一貫した動作をします。

構文

TIME_TO_SEC(<date_or_time_expr>)

パラメーター

パラメーター説明
<date_or_time_expr>必須。TIMEまたはDATETIMEをサポートします。入力がDATETIME型の場合、関数は計算のために時刻部分を抽出します。特定のdatetime/time形式については、datetime conversionおよびdate conversionを参照してください

戻り値

入力された時刻値に対応する総秒数を表すINT型を返します。計算式:時×3600 + 分×60 + 秒。

  • datetime文字列を入力する場合、明示的にdatetime型に変換する必要があります。そうでなければ、デフォルトでtime型に変換され、NULLが返されます。
  • 入力が負の時刻(-01:30:00など)の場合、対応する負の秒数(-5400など)を返します
  • 入力がNULLの場合、NULLを返します
  • マイクロ秒部分は無視されます(例:12:34:56.789は12:34:56としてのみ計算されます)

-- Pure time type
SELECT TIME_TO_SEC('16:32:18') AS result;
+--------+
| result |
+--------+
| 59538 |
+--------+

-- Process the DATETIME string and return NULL.
SELECT TIME_TO_SEC('2025-01-01 16:32:18') AS result;
+--------+
| result |
+--------+
| NULL |
+--------+

-- A datetime string needs to be explicitly converted to a datetime type.
SELECT TIME_TO_SEC(cast('2025-01-01 16:32:18' as datetime)) AS result;
+--------+
| result |
+--------+
| 59538 |
+--------+

-- Negative time conversion
SELECT TIME_TO_SEC('-02:30:00') AS result;
+--------+
| result |
+--------+
| -9000 |
+--------+

-- Negative time with microseconds (ignore microseconds)
SELECT TIME_TO_SEC('-16:32:18.99') AS result;
+--------+
| result |
+--------+
| -59538 |
+--------+

-- Microsecond processing (ignore microseconds)
SELECT TIME_TO_SEC('10:15:30.123456') AS result;
+--------+
| result |
+--------+
| 36930 |
+--------+

-- Invalid time
SELECT TIME_TO_SEC('12:60:00') AS result;
+--------+
| result |
+--------+
| NULL |
+--------+

-- Exceeds TIME range
SELECT TIME_TO_SEC('839:00:00') AS result;
+--------+
| result |
+--------+
| NULL |
+--------+

-- Parameter is NULL
SELECT TIME_TO_SEC(NULL) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+