DATE_FORMAT

说明

按照规定的格式显示日期/时间数据。

语法

date_format ::=

参数

time_expression

date_expression

bigint_expression

text_expression

指定的时间/日期值。支持time、date、bigint、text类型,bigint类型时即为一个纯数字的时间串。

format_expression

时间的输出格式。

时间输出格式:

格式 描述 举例
%a 缩写星期名 SELECT DATE_FORMAT('1998-01-02 11:12:13','%a') FROM DUAL;
%b 缩写月份名 SELECT DATE_FORMAT('1998-01-02 11:12:13','%b') FROM DUAL;
%c 月份(1-12) SELECT DATE_FORMAT('1998-01-02 11:12:13','%c') FROM DUAL;
%d 月中天(01-31) SELECT DATE_FORMAT('1998-01-01 11:12:13','%d') FROM DUAL;
%e 月中天(0-31) SELECT DATE_FORMAT('1998-01-02 11:12:13','%e') FROM DUAL;
%f 微秒(保留六位整数) set dateformat='yyyy-mm-dd hh24:mi:ss:ff';SELECT DATE_FORMAT('1998-01-02 11:12:13.123456','%f') FROM DUAL;
%h 小时(01-12) SELECT DATE_FORMAT('1998-01-02 12:12:13','%h') FROM DUAL;
%i 分钟(00-59) SELECT DATE_FORMAT('1998-01-02 11:01:13','%i') FROM DUAL;
%j 年中天(001-366) SELECT DATE_FORMAT('1998-01-02 11:12:13','%j') FROM DUAL;
%k 小时(00-23) SELECT DATE_FORMAT('1998-01-02 11:12:13','%k') FROM DUAL;
%l 小时(1-12) SELECT DATE_FORMAT('1998-01-02 11:12:13','%l') FROM DUAL;
%m 月份(01-12) SELECT DATE_FORMAT('1998-01-02 11:12:13','%m') FROM DUAL;
%p PM 或 AM SELECT DATE_FORMAT('1998-01-02 11:12:13','%p') FROM DUAL;
%r 时间,HH12:MI:SS AM/PM SELECT DATE_FORMAT('1998-01-02 11:12:13','%r') FROM DUAL;
%s 秒(00-59) SELECT DATE_FORMAT('1998-01-02 11:12:13','%s') FROM DUAL;
%u 年中周(星期一是一周的第一天) SELECT DATE_FORMAT('1998-01-02 11:12:13','%u') FROM DUAL;
%v 年中天(星期一是一周的第一天) SELECT DATE_FORMAT('1998-01-02 11:12:13','%v') FROM DUAL;
%w 周中天(星期日是一周的第一天) SELECT DATE_FORMAT('1998-01-02 11:12:13','%w') FROM DUAL;
%x 年中天(星期一是一周的第一天) SELECT DATE_FORMAT('1998-03-02 11:12:13','%x') FROM DUAL;
%y 年份(保留两位整数,等同YY) SELECT DATE_FORMAT('1998-04-02 11:12:13','%y') FROM DUAL;
%D 带有英文后缀的月中的天 SELECT DATE_FORMAT('1998-01-02 11:12:13','%D') FROM DUAL;
%H 小时(00-23) SELECT DATE_FORMAT('1998-01-02 11:12:13','%H') FROM DUAL;
%I 小时(01-12) SELECT DATE_FORMAT('1998-01-02 11:12:13','%I') FROM DUAL;
%M 月份名 SELECT DATE_FORMAT('1998-01-02 11:12:13','%M') FROM DUAL;
%S 秒(00-59) SELECT DATE_FORMAT('1998-01-02 11:12:13','%S') FROM DUAL;
%T 时间,HH24:MI:SS SELECT DATE_FORMAT('1998-01-02 11:12:13','%T') FROM DUAL;
%U 年中周(星期日是一周的第一天) SELECT DATE_FORMAT('1998-01-02 11:12:13','%U') FROM DUAL;
%V 年中天(星期日是一周的第一天) SELECT DATE_FORMAT('1998-01-02 11:12:13','%V') FROM DUAL;
%W 星期名 SELECT DATE_FORMAT('1998-01-02 11:12:13','%W') FROM DUAL;
%X 年中天(星期日是一周的第一天) SELECT DATE_FORMAT('1998-02-02 11:12:13','%X') FROM DUAL;
%Y 年份(保留四位整数,等同YYYY) SELECT DATE_FORMAT('1998-02-02 11:12:13','%Y') FROM DUAL;

返回值

返回一个text类型的值。

示例

示例1: 指定一个time类型的值作为时间

SELECT DATE_FORMAT('11:12:13'::time,'%r') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
11:12:13 AM            |
总数目:1

示例2: 指定一个date类型的值作为日期

--  设置日期格式
set dateformat='yyyy-mm-dd hh24:mi:ss:ff';


SELECT DATE_FORMAT('2023-09-08 11:12:13.123456'::date,'%Y-%m-%d %T.%f') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2023-09-08 11:12:13.123|
456                    |
总数目:1

--  还原日期格式
reset dateformat;

示例3: 指定一个bigint类型的值作为日期

--  此时输入的时间串必须为一个纯数字的时间串
SELECT DATE_FORMAT(20230908111213,'%Y-%m-%d %T') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2023-09-08 11:12:13    |
总数目:1


SELECT DATE_FORMAT(20230908,'%Y-%m-%d %T') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2023-09-08 00:00:00    |
总数目:1


SELECT DATE_FORMAT(111213,'%Y-%m-%d %T') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2011-12-13 00:00:00    |
总数目:1

示例4: 指定一个text类型的值作为日期

SELECT DATE_FORMAT('2023-09-08 11:12:13','%Y-%m-%d %T') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2023-09-08 11:12:13    |
总数目:1


SELECT DATE_FORMAT('20230908111213','%Y-%m-%d %T') FROM DUAL;
DATE_FORMAT(text)      |
-----------------------
2023-09-08 11:12:13    |
总数目:1