TIME_FORMAT
功能描述
TIME_FORMAT函数按照指定的格式格式化时间。
注意事项
- 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
当第一参数time的hour部分超出
[0, 23]
的范围时, %H, %k和%T能够产生超出该范围的值,其余包含小时的format将转为取模12后的小时数。SELECT time_format('100:59:59', '%H|%k|%T|%I');
返回结果为:
time_format
----------------------
100|100|100:59:59|04
(1 row)
- 对于非时分秒相关的格式,会返回0或NULL,包括:
格式 | 返回结果 |
---|---|
%a、%b、%D、%j、%M、%U、%u、%V、%v、%W、%w、%X、%x | NULL |
%c 、%e | 0 |
%d、%m、%y | 00 |
%Y | 0000 |
- 提取的时间值最多保留六位小数。
- 如果其中任何一个参数为NULL,TIME_FORMAT函数将返回 NULL。
语法格式
TIME_FORMAT(time,format)
参数说明
time
需要格式化的时间,time或datetime表达式。
format
规定日期/时间的输出格式。支持的格式如下表所示:
格式 | 描述 |
---|---|
%f | 微秒(000000至999999) |
%H | 小时(00,24小时格式,但能超出23) |
%h | 小时(00到12) |
%I | 小时(00到12) |
%i | 分钟(00至59) |
%p | AM or PM |
%r | 时间为12小时AM或PM格式(hh:mm:ss AM / PM) |
%S | 秒(00到59) |
%s | 秒(00到59) |
%T | 24小时格式的时间(hh:mm:ss),小时数能超出23 |
%k | 小时数 (0,24小时格式,但能超出23) |
示例
SELECT TIME_FORMAT('83:59:59.0000009', '%T|%r|%H|%h|%I|%i|%S|%f|%p|%k');
SELECT TIME_FORMAT('2022-1-1 23:59:59.0000009', '%T|%r|%H|%h|%I|%i|%S|%f|%p|%k');
返回结果分别为:
time_format
--------------------------------------------------
83:59:59|11:59:59 AM|83|11|11|59|59|000001|AM|83
(1 row)
time_format
--------------------------------------------------
23:59:59|11:59:59 PM|23|11|11|59|59|000001|PM|23
(1 row)