DATE_FORMAT
📄字数 1.5K
👁️阅读量 加载中...
功能描述
将日期值按照指定的格式字符串进行转换,返回格式化后的字符串结果。
提示
- 该函数不支持
time
时间类型格式的字符串。支持time
类型的函数请参考 TIME_FORMAT()。
语法格式
sql
DATE_FORMAT(expr1, expr2)
输入参数
expr1
:时间,DATE
、DATETIME
或DATETIME WITH TIME ZONE
类型,或能隐式转换为上述类型的其他类型。expr2
:格式串,VARCHAR
类型,如%y-%c-%D %h:%i:%s
。
格式串说明
表格中的格式符同样适用于 TIME_FORMAT() 函数。
格式说明符 | 说明 |
---|---|
%a | 工作日名称缩写(Sun..Sat) |
%b | 缩写月份名称(Jan..Dec) |
%c | 月份,数字(1..12) |
%D | 带有英文后缀的月份中的第几天(1st, 2nd, 3rd, 4th, ...) |
%d | 月份中的第几天,数字(01..31) |
%e | 月份中的第几天,数字(1..31) |
%f | 微秒(000000..999999) |
%H | 小时(00..23) |
%h | 小时(01..12) |
%I | 小时(01..12) |
%i | 分钟,数字(00..59) |
%j | 一年中的第几天(001..366) |
%k | 小时(0..23) |
%l | 小时(1..12) |
%M | 月份名称(January..December) |
%m | 月份,数字(01..12) |
%p | AM(上午)或PM(下午) |
%r | 时间,12小时(hh:mm:ss后接AM(上午)或PM(下午)) |
%S | 秒(00..59) |
%s | 秒(00..59) |
%T | 时间,24小时(hh:mm:ss) |
%U | 周(00..53),其中星期日是一周的第一天;WEEK()模式0 |
%u | 周(00..53),其中星期一是一周的第一天;WEEK()模式1 |
%V | 周(01..53),其中星期日是一周的第一天;WEEK()模式2;与%X一起使用 |
%v | 周(01..53),其中星期一是一周的第一天;WEEK()模式3;与%x一起使用 |
%W | 工作日名称(Sunday..Saturday) |
%w | 星期几(0=Sunday..6=Saturday) |
%X | 表示星期日为一周的第一天的年份,数字,四位数;与%V一起使用 |
%x | 表示星期一是一周的第一天的年份,数字,四位数;与%v一起使用 |
%Y | 年份,数字,四位数 |
%y | 年份,数字,两位数 |
%% | 第一个'%'是转义字符,只表示一个'%',不作为格式化占位符使用 |
提示
- 对于%U、%u、%V和%v这些格式说明符,请参阅 WEEK() 函数的描述以了解模式值的相关信息。该模式会影响周编号的计算方式。
- 因
NULL
无具体的类型,当第一个参数为NULL
时,会产生异常E10100 候选函数出现多义性
,需要手动为参数指定具体的形参类型,如:DATE_FORMAT(NULL::DATE, NULL)
。 - 不支持修改显示日期和月份名称及其缩写的语言,默认为英文名称。
输出结果
返回 VARCHAR
类型,任意输入参数为 NULL
时,输出结果为 NULL
。
示例
sql
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('1912-01-03 14:02:03.123456','%y-%c-%D %h:%i:%s');
+-------------------+
| EXPR1 |
+-------------------+
| 12-1-3rd 02:02:03 |
+-------------------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
+---------------------+
| EXPR1 |
+---------------------+
| Sunday October 2009 |
+---------------------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
+----------+
| EXPR1 |
+----------+
| 22:23:00 |
+----------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
+--------------------------+
| EXPR1 |
+--------------------------+
| 4th 00 Thu 04 10 Oct 277 |
+--------------------------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
+------------------------------------+
| EXPR1 |
+------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6 |
+------------------------------------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('1999-01-01', '%X %V');
+---------+
| EXPR1 |
+---------+
| 1998 52 |
+---------+
-- 返回格式化的日期值
SQL> SELECT DATE_FORMAT('2006-06-30', '%d');
+-------+
| EXPR1 |
+-------+
| 30 |
+-------+