Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


TO_CHAR

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

功能描述

将日期、时间、时间戳、时间间隔类型转换为格式化字符串。

语法格式

sql
TO_CHAR(expr[, fmt])

输入参数

  • expr:要转换的值,日期时间时间戳时间间隔 类型,或能隐式转换为上述类型的其他类型。
  • fmt:格式串,VARCHAR 类型,如:YYYY-MM-DD。如果省略 fmt,则根据输入参数 expr 的类型,输出结果的格式存在差异,详见 默认格式的输出结果

参数支持的类型

第一个参数第二个参数
DATE-
DATECHAR
DATETIME-
DATETIME WITH TIME ZONE-
DATETIME WITH TIME ZONECHAR
DATETIMECHAR
INTERVAL DAY-
INTERVAL DAY TO HOUR-
INTERVAL DAY TO MINUTE-
INTERVAL DAY TO SECOND-
INTERVAL HOUR-
INTERVAL HOUR TO MINUTE-
INTERVAL HOUR TO SECOND-
INTERVAL MINUTE-
INTERVAL MINUTE TO SECOND-
INTERVAL MONTH-
INTERVAL SECOND-
INTERVAL YEAR-
INTERVAL YEAR TO MONTH-
TIME-
TIME WITH TIME ZONE-
TIME WITH TIME ZONECHAR
TIMECHAR

支持的格式说明

格式(不区分大小写)描述
YY/YYY/YYYY
MM
DD/DDD
HH/HH24小时
MI分钟
SS[SSSSSS]秒(精度可选)

提示

  • NULL 无具体的类型,当第一个参数为 NULL 时,会产生异常 E10100 候选函数出现多义性,需要手动为参数指定具体的类型,如:TO_CHAR(NULL::DATETIME)
  • - 表示无输入参数。

输出结果

返回 VARCHAR 类型,任意输入参数为 NULL 时,输出结果为 NULL

默认格式的输出结果

第一个参数的类型输出结果的格式
DATE客户端连接会话上的时间格式
DATETIME客户端连接会话上的时间格式
DATETIME WITH TIME ZONE客户端连接会话上的时间格式
INTERVAL DAY按SQL标准输出
INTERVAL DAY TO HOUR按SQL标准输出
INTERVAL DAY TO MINUTE按SQL标准输出
INTERVAL DAY TO SECOND按SQL标准输出
INTERVAL HOUR按SQL标准输出
INTERVAL HOUR TO MINUTE按SQL标准输出
INTERVAL HOUR TO SECOND按SQL标准输出
INTERVAL MINUTE按SQL标准输出
INTERVAL MINUTE TO SECOND按SQL标准输出
INTERVAL MONTH按SQL标准输出
INTERVAL SECOND按SQL标准输出
INTERVAL YEAR按SQL标准输出
INTERVAL YEAR TO MONTH按SQL标准输出
TIMEHH24:MI:SSSSS
TIME WITH TIME ZONEHH24:MI:SSSSS+TZH:TZM

提示

  • time_format(客户端连接会话上的时间格式),默认时间格式为:YYYY-MM-DD HH24:MI:SS,时间格式的详细信息请参考会话参数 TIME_FORMAT
  • time_format 的值会影响参数的解析,如果将 time_format 设置成 YYYY-MM-DD,但是参数的类型为 DATETIME,函数会抛出值异常的错误。所以,time_format 的值要和参数的格式一致。
  • TIMETIME WITH TIME ZONE 类型的值只精确到毫秒。

示例

sql
-- 按格式 'DD MM YYYY HH24:MI:SSSSS' 返回字符串
SQL> SELECT TO_CHAR(NOW(), 'DD MM YYYY HH24:MI:SSSSS') FROM dual;

+-------------------------+
|          EXPR1          |
+-------------------------+
| 10 07 2025 10:22:09.194 |
+-------------------------+

-- 原样返回 INTERVAL YEAR TO MONTH 类型的值
SQL> SELECT TO_CHAR(INTERVAL '1-10' YEAR TO MONTH) FROM dual;

+-------+
| EXPR1 |
+-------+
| 1-10  |
+-------+