MySQL以'HH:MM:SS'格式檢索和顯示TIME值(或對于大的小時值采用'HHH:MM:SS'格式)。TIME值的范圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是TIME類型不僅可以用于表示一天的時間(必須小于24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大于24小時,或者甚至為負)。
你可以用各種格式指定TIME值:
· 'D HH:MM:SS.fraction'格式的字符串。還可以使用下面任何一種“非嚴格”語法:'HH:MM:SS.fraction'、'HH:MM:SS'、'HH:MM'、'D HH:MM:SS'、'D HH:MM'、'D HH'或'SS'。這里D表示日,可以取0到34之間的值。請注意MySQL還不保存分數。
· 'HHMMSS'格式的沒有間割符的字符串,假定是有意義的時間。例如,'101112'被理解為'10:11:12',但'109712'是不合法的(它有一個沒有意義的分鐘部分),將變為'00:00:00'。
· HHMMSS格式的數值,假定是有意義的時間。例如,101112被理解為'10:11:12'。下面格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。請注意MySQL還不保存分數。
· 函數返回的結果,其值適合TIME上下文,例如CURRENT_TIME。
對于指定為包括時間部分間割符的字符串的TIME值,如果時、分或者秒值小于10,則不需要指定兩位數。'8:3:2'與'08:03:02'相同。
為TIME列分配簡寫值時應注意。沒有冒號,MySQL解釋值時假定最右邊的兩位表示秒。(MySQL解釋TIME值為過去的時間而不是當天的時間)。例如,你可能認為'1112'和1112表示'11:12:00'(11點過12分),但MySQL將它們解釋為'00:11:12'(11分,12 秒)。同樣,'12'和12 被解釋為 '00:00:12'。相反,TIME值中使用冒號則肯定被看作當天的時間。也就是說,'11:12'表示'11:12:00',而不是'00:11: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'還是不合法的值。