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 |
+-------+