MySQL 會以 'hh:mm:ss'
格式(或針對較大的時數值,以 'hhh:mm:ss'
格式)擷取和顯示 TIME
值。TIME
值的範圍可以從 '-838:59:59'
到 '838:59:59'
。時數部分可能非常大,因為 TIME
型別不僅可用於表示一天中的時間(必須小於 24 小時),還可用於表示經過的時間或兩個事件之間的時間間隔(可能遠大於 24 小時,甚至是負數)。
MySQL 能夠識別多種格式的 TIME
值,其中一些格式可以包含尾隨的小數秒部分,精度最高可達微秒(6 位數)。請參閱第 11.1.3 節,「日期和時間文字」。如需關於 MySQL 中小數秒支援的資訊,請參閱第 13.2.6 節,「時間值中的小數秒」。特別是,插入 TIME
欄位的任何值中的小數部分都會被儲存,而不是捨棄。包含小數部分時,TIME
值的範圍是 '-838:59:59.000000'
到 '838:59:59.000000'
。
請小心將縮寫值指派給 TIME
欄位。MySQL 會將帶有冒號的縮寫 TIME
值解讀為一天中的時間。也就是說,'11:12'
表示 '11:12:00'
,而不是 '00:11:12'
。MySQL 會假設最右邊的兩位數表示秒數,來解讀不帶冒號的縮寫值(也就是說,將其視為經過的時間,而不是一天中的時間)。例如,您可能會認為 '1112'
和 1112
表示 '11:12:00'
(11 點過 12 分鐘),但 MySQL 會將它們解讀為 '00:11:12'
(11 分鐘,12 秒)。同樣地,'12'
和 12
會被解讀為 '00:00:12'
。
時間部分和小數秒部分之間唯一可識別的分隔符號是小數點。
預設情況下,超出 TIME
範圍但其他方面有效的值會被截斷為範圍的最近端點。例如,'-850:00:00'
和 '850:00:00'
會轉換為 '-838:59:59'
和 '838:59:59'
。無效的 TIME
值會轉換為 '00:00:00'
。請注意,由於 '00:00:00'
本身就是有效的 TIME
值,因此無法從儲存在表格中的 '00:00:00'
值判斷原始值是否指定為 '00:00:00'
,還是無效。
為了更嚴格地處理無效的 TIME
值,請啟用嚴格 SQL 模式以導致錯誤發生。請參閱第 7.1.11 節,「伺服器 SQL 模式」。