13.9 TIME
在本教程中,我们将向您介绍MySQL TIME
数据类型,并显示有用的时间函数来有效地处理时间数据。
MySQL TIME数据类型简介
MySQL使用HH:MM:SS
格式来查询和显示代表一天中的时间值(在24
小时内)。要表示两个事件之间的时间间隔,MySQL使用大于24
小时的HHH:MM:SS
格式。
要定义TIME
数据类型的列,请使用以下语法:
例如,以下代码片段定义了一个名为start_at
的列,其中包含TIME
数据类型。
TIME
值范围为-838:59:59
至838:59:59
。 此外,TIME
值可以具有高达微秒精度(6
位数)的小数秒部分。 要使用小数秒精度部分定义数据类型为TIME
的列,请使用以下语法:
N是表示小数部分的整数值,最多6
位数。
以下代码片段定义了TIME
数据类型的列,其中包含3
位数的小数秒。
TIME
值需要3
个字节进行存储。如果TIME
值包括分数秒精度,则会根据小数秒精度的位数获取额外的字节。下表说明了小数秒精度所需的存储空间。
分数秒精度 | 存储(字节) |
0 | 0 |
1,2 | 1 |
3,4 | 2 |
5,6 | 3 |
例如,TIME
和TIME(0)
需要3
个字节。 TIME(1)
和TIME(2)
需要4
个字节(3 + 1
); TIME(3)
和TIME(6)
分别需要5
和6
个字节。
MySQL TIME数据类型示例
让我们来看一下在表中对列使用TIME
数据类型的例子。
首先,创建一个名为tests
的新表,其中包含四个列:id
,name
,start_at
和end_at
。 start_at
和end_at
列的数据类型为TIME
。
第二步,在tests
表中插入一行。
第三步,从tests
表查询数据,如下语句:
执行上面查询语句,得到以下结果 -
请注意,我们使用“HH:MM:SS
”作为INSERT语句中的文字时间值。下面来看看MySQL可以识别的所有有效的时间文字。
MySQL TIME文字
除了我们之前提到的“HH:MM:SS
”格式之外,MySQL还可以识别各种时间格式。
MySQL允许使用“HHMMSS
”格式,而不使用分隔符(:
)表示时间值。 例如’08:30:00
‘和’10:15:00
‘可以重写为’083000
‘和’101500
‘。
但是,108000
不是有效的时间值,因为80
不代表正确的分钟。 在这种情况下,如果您尝试在表中插入无效的时间值,MySQL会引发错误。
执行上述语句后,MySQL发出以下错误消息。
除了字符串格式之外,MySQL接受HHMMSS
作为代表时间值的数字。也可以使用SS
,MMSS
。 例如,可以使用082000
,而不是使用'082000'
,如下所示:
对于时间间隔,您可以使用'D HH:MM:SS'
格式,其中D
代表天数从0
到34
的范围。更灵活的语法是'HH:MM'
,'D HH:MM'
,'D HH'
或'SS'
。
如果使用分隔符:
,可以使用1
位数字表示小时,分钟或秒。 例如,可以使用9:5:0
而不是'09:05:00'
。
MySQL TIME函数
MySQL提供了几个有用的时间函数来处理TIME
数据。
获取当前时间
要获取数据库服务器的当前时间,请使用CURRENT_TIME
函数。根据使用该函数的上下文,CURRENT_TIME
函数以字符串('HH:MM:SS'
)或数值(HHMMSS
)返回当前时间值。
以下语句说明了字符串和数字上下文中的CURRENT_TIME
函数:
执行上面查询语句,得到以下结果 -
从TIME值添加和减去时间
要将TIME
值添加到另一个TIME
值,请使用ADDTIME
函数。要从另一个TIME
值中减去TIME
值,可以使用SUBTIME
函数。
以下语句从当前时间起减去2
小时30
分钟。
执行上面查询语句,得到以下结果 -
此外,可以使用TIMEDIFF()
函数来获取两个TIME
值之间的差异。
执行上面查询语句,得到以下结果 -
格式化MySQL TIME值
虽然MySQL在检索和显示TIME
值时使用“HH:MM:SS
”,但可以使用TIME_FORMAT
函数以推荐的方式显示TIME
值。
TIME_FORMAT
函数类似于DATE_FORMAT函数,除了TIME_FORMAT
函数仅用于格式化TIME
值其它均差不多。
请参见以下一个示例 -
执行上面查询语句,得到以下结果 -
在上面的时间格式字符串中:
%h
表示从0
到12
的两位数小时数值。%i
表示从0
到60
的两位数分钟数值。%p
表示AM
或PM
,也就是表示上午或下午。
从TIME值提取小时,分钟和秒
要从TIME
值中提取小时,分和秒,可以使用HOUR
,MINUTE
和SECOND
函数,如下所示:
获取UTC时间值
要获取UTC
时间,请使用UTC_TIME
函数,如下所示:
执行上面查询语句,得到以下结果 -
在本教程中,我们已经介绍了有关MySQL TIME
数据类型和一些常用的时间函数来处理TIME
值。
Last updated