Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


DATE_FORMAT

📄字数 1.5K
👁️阅读量 加载中...

功能描述

将日期值按照指定的格式字符串进行转换,返回格式化后的字符串结果。

提示

  • 该函数不支持 time 时间类型格式的字符串。支持 time 类型的函数请参考 TIME_FORMAT()

语法格式

sql
DATE_FORMAT(expr1, expr2)

输入参数

  • expr1:时间,DATEDATETIMEDATETIME 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)
%pAM(上午)或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    |
+-------+