MySQL では、TIME
型の値の取り出しと表示は、'HH:MM:SS'
形式(時間の部分が大きい値では
'HHH:MM:SS'
形式)で行われます。TIME
値の範囲は '-838:59:59'
〜
'838:59:59'
です。時間の部分が大きい理由は、TIME
型が 1
日の時刻を表現するためだけでなく、経過時間や
2
つのイベント間の間隔を表現するために使用される場合があるためです。1
日の時刻は 24
時以上になることはありませんが、イベント間の経過時間は
24
時間を大きく上回ったり、マイナスになったりすることがあります。
TIME
型の値は、次に示すさまざまな形式で指定することができます。
'D HH:MM:SS.fraction'
形式の文字列として指定(注意: MySQL
では、小数部は今のところ時刻カラムに格納されない)。``柔軟''
な構文として、HH:MM:SS.fraction
、HH:MM:SS
、HH:MM
、D
HH:MM:SS
、D
HH:MM
、D
HH
、SS
のいずれかも使用できる。この場合、D
は 0 〜 33 の間の日。
区切り記号のない、'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
より少ない時、分、または秒の値を 2
桁で指定する必要はありません。'8:3:2'
は '08:03:02'
と同じです。
TIME
型のカラムに ``短い''
TIME
値を割り当てるときは注意してください。MySQL
では、コロンがない場合、右側の桁が秒を表すという前提にたって値を解釈します(この場合、TIME
型の値は 1
日の時刻ではなく、経過時間として解釈されます)。たとえば、'1112'
や 1112
は、'11:12:00'
(11 時 12
分)を表すように見えますが、MySQL
では、'00:11:12'
(11 分 12
秒)として解釈されます。
同様に、'12'
や 12
は '00:00:12'
として解釈されます。
それに対し、コロンのある TIME
値は、常に 1
日の時刻として扱われます。そのため、'11:12'
は、'00:11:12'
ではなく
'11:12:00'
を意味します。
正しい値のうち、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'
値から見分けることはできないことに注意してください。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.