时间和日期格式化函数
date_format(timestamp, fmt)
date_format函数将日期参数按照fmt指定的格式转换为字符串。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT date_format('2009-10-04 22:23:00', '%M %D %W'); date_format -------------------- October 4th Sunday (1 row) SELECT date_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S'); date_format --------------------- 2021-02-20 08:30:45 (1 row) SELECT date_format('2021-02-20 18:10:15', '%r-%T'); date_format ---------------------- 06:10:15 PM-18:10:15 (1 row) |
表1显示了可以用于将日期参数格式化输出的格式类型,这些格式类型适用于函数date_format、time_format、str_to_date、str_to_time和from_unixtime。
|
格式 |
说明 |
取值 |
|---|---|---|
|
%a |
缩写星期名 |
Sun...Sat |
|
%b |
缩写月份名 |
Jan...Dec |
|
%c |
月份 |
0...12 |
|
%D |
带英文后缀的月份日期 |
0th, 1st, 2nd, 3rd, … |
|
%d |
一个月里的日,2位 |
00...31 |
|
%e |
一个月里的日 |
0...31 |
|
%f |
微秒 |
000000...999999 |
|
%H |
小时,24小时制 |
00...23 |
|
%h |
小时,12小时制 |
01...12 |
|
%I |
小时,12小时制,同%h |
01...12 |
|
%i |
分钟 |
00...59 |
|
%j |
一年里的日 |
001...366 |
|
%k |
小时,24小时制,同%H |
0...23 |
|
%l |
小时,12小时制,同%h |
1...12 |
|
%M |
月份名 |
January...December |
|
%m |
月份,两位 |
00...12 |
|
%p |
上下午 |
AM PM |
|
%r |
时间,12小时制 |
hh::mm::ss AM/PM |
|
%S |
秒 |
00...59 |
|
%s |
秒,同%S |
00...59 |
|
%T |
时间,24小时制 |
hh::mm::ss |
|
%U |
周 (00-53) 星期日是一周的第一天 |
00...53 |
|
%u |
周 (00-53) 星期一是一周的第一天 |
00...53 |
|
%V |
周 (01-53) 星期日是一周的第一天,与%X搭配使用 |
01...53 |
|
%v |
周 (01-53) 星期一是一周的第一天,与%x搭配使用 |
01...53 |
|
%W |
星期名 |
Sunday...Saturday |
|
%w |
一周的日,周日为0 |
0...6 |
|
%X |
年份,其中的星期日是周的第一天,4 位,与%V搭配使用 |
- |
|
%x |
年份,其中的星期一是周的第一天,4 位,与%v搭配使用 |
- |
|
%Y |
年份,4位 |
- |
|
%y |
年份,2位 |
- |
|
%% |
字符'%' |
字符'%' |
|
%x |
'x',上述未列出的任意字符 |
字符'x' |
date_format支持的输出格式中,%U、%u、%V、%v、%X、%x暂不支持。
time_format(time, fmt)
描述:time_format函数将日期参数按照fmt指定的格式转换为字符串。与date_format函数类似,但格式字符串只能包含小时、分钟、秒和微秒的格式说明符,如果包含其他说明符则会返回NULL值或0。
返回值类型:text
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT time_format('2009-10-04 22:23:00', '%M %D %W'); time_format -------------------- (1 row) SELECT time_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S'); time_format --------------------- 0000-00-00 08:30:45 (1 row) SELECT time_format('2021-02-20 18:10:15', '%r-%T'); time_format ---------------------- 06:10:15 PM-18:10:15 (1 row) |
time_format仅支持时间相关的格式输出(%f、%H、%h、%I、%i、%k、%l、%p、%r、%S、%s、%T),不支持日期相关格式,其他情况处理为普通字符。
str_to_date(str, format)
描述:将日期/时间格式的字符串(str),按照所提供的显示格式(format)转换为日期类型的值。
返回值类型:timestamp
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT str_to_date('01,5,2021','%d,%m,%Y'); str_to_date --------------------- 2021-05-01 00:00:00 (1 row) SELECT str_to_date('01,5,2021,09,30,17','%d,%m,%Y,%h,%i,%s'); str_to_date --------------------- 2021-05-01 09:30:17 (1 row) |
适用于str_to_date的格式化输入的格式类型参考表1。这里仅支持“日期”格式、“日期+时间”格式的输入转换,对于仅“时间”格式的输入场景请使用str_to_time。
str_to_time(str, format)
描述:将时间格式的字符串(str),按照所提供的显示格式(format)转换为时间类型的值。
返回值类型:time
示例:
1 2 3 4 5 |
SELECT str_to_time('09:30:17','%h:%i:%s'); str_to_time ------------- 09:30:17 (1 row) |
适用于str_to_time的格式化输入的格式类型参考表1,这里仅支持“时间”格式的输入转换,对于“日期”格式、“日期+时间”格式的输入场景请使用str_to_date。