首批通过分布式安全可靠测评,为关键业务系统打造
TO_CHAR(datetime)
更新时间:2026-07-15 20:42:45
描述
该函数用于将日期时间类型的值转换为 VARCHAR 类型的数据。
说明
对于 OceanBase 数据库 V4.3.5 版本,该函数从 V4.3.5 BP1 版本开始支持。
语法声明
TO_CHAR(datetime [, fmt])
参数解释
datetime:表示要转换的日期时间型数据。fmt:可选项,用于指定输出的格式。如果不指定参数fmt,则将按参数datetime的格式转换为VARCHAR数据类型。具体介绍参见下文 fmt。
fmt
fmt 参数格式取值如下:
| 格式 | 说明 |
|---|---|
-、/、,、.、;、: 和 "text" |
表示时间分隔符号。除了标准的几个,还允许用文字作为分割符号。例如 TO_CHAR(SYSDATE(), 'YYYY "年" mm "月" dd "日"')。 |
AD/A.D. |
表示公元。会根据 NLS 的不同转换为公元或者 AD 等。 |
AM/A.M. |
表示上午。同 PM/P.M. 会返回上午或下午标识。 |
BC/B.C. |
表示公元前。 |
CC/SCC |
返回世纪,以阿拉伯数字表示。如果年的后两位介于 01 至 99 之间,那么,返回前两位 +1,否则返回前两位。 |
D |
返回一周之中的某天,返回的是序号 1 至 7。 |
DAY |
返回一周之中的某天,不过返回的是星期几。
说明该格式和语言设置有关系,在中国环境 |
DD |
返回月份中的某天(1 至 31)。 |
DDD |
返回年份中的某天(1 至 366)。 |
DL |
返回长的日期格式。受到 NLS_TERRITORY、NLS_LANGUAGE 参数控制。 |
DS |
返回短的日期格式。受到 NLS_TERRITORY、NLS_LANGUAGE 参数控制。 |
E |
表示纪元简称,但是只适合以下集中日历:日本皇室、中华民国、泰国佛历。 |
FF [1..9] |
就是毫秒,如果不更上数字就是用默认的精度。只能用于 TIMESTAMP 类型的。 |
FM |
不返回任何内容。 |
HH/HH12 |
表示小时,为 12 小时制(1 至 12)。 |
HH24 |
表示小时,为 24 小时制(0 至 23)。 |
IW |
ISO 标准的星期序号(1 至 52 或者 1 至 53)。 |
IYYY、IYY、IY、I |
返回 ISO 年(4位)4、3、2、1 位数字(倒数)。 |
J |
表示儒略日(多用于天文的一种日历),从公元前 4712 年 1 月 1 日算起,得出的结果是个整数,算法大体为:(公元日期 + 4712)*儒略日历年平均天数。 |
MI |
返回分钟(0 至 59)。 |
MM |
返回两位月份(01 至 12)。 |
MON |
返回月的简称。和国家有关系 NLS_DATE_LANGUAGE,例如,04 在中文环境下用 4 表示。 |
MONTH |
返回月的名称。和国家有关系 NLS_DATE_LANGUAGE,例如,在中文下 04 表示为 4 月。 |
PM/P.M. |
表示下午。同 AM/A.M. 会返回上午或下午标识。 |
Q |
返回季度(1 至 4)。 |
RR |
表示年(后两位)。 |
SS |
返回秒(0 至 59),一分钟内。 |
SSSSS |
返回一天从午夜开始的累积秒数(0 至 86399)。 |
SYYYY |
四位年,S 前缀表示公元前 BC。 |
TZD |
夏令时制信息,时区简写加上夏令时信息,必须和格式 TZR 设置的时区对应。包括下面三个 TZH、TZM、TZR,都是和时区相关,并不是直接用在 TO_CHAR。 |
TZH |
时区中的小时,例如 hh:mi:ss.fftzh:tzm。 |
TZM |
时区中的分钟。 |
TZR |
时区中的区域信息,必须是数据库支持的时区,例如 US/Pacific。 |
WW |
表示星期的序号,从年的第一天算起到年的最后一个第七天(1 至 53)。例如,2008-01-01 到2008-01-07 算 1,2008-01-09 到 2008-01-13 算 2。 |
W |
一个月中的星期序号。 |
X |
代表本地根符号,没有特别用处,只能和 TIMESTAMP 类型一起使用。 |
Y,YYY |
返回四位数年,用英文逗号分隔。例如 2,008。 |
YYYY、YYY、YY、Y |
表示后面 4、3、2、1 位数字的年。例如 2008 可以分别取值为:2008、008、08、8。 |
返回类型
- 返回
VARCHAR类型的数据。 datetime值为NULL时,返回NULL。
示例
SELECT
TO_CHAR(SYSDATE()),
TO_CHAR(SYSDATE(), 'YYYY/MM/DD HH24:MI:SS AM'),
TO_CHAR(SYSDATE(), 'DS HH:MI:SS PM'),
TO_CHAR(SYSDATE(), 'Month'),
TO_CHAR(NULL, 'HH:MI:SS');
返回结果如下:
+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+---------------------------+
| TO_CHAR(SYSDATE()) | TO_CHAR(SYSDATE(), 'YYYY/MM/DD HH24:MI:SS AM') | TO_CHAR(SYSDATE(), 'DS HH:MI:SS PM') | TO_CHAR(SYSDATE(), 'Month') | TO_CHAR(NULL, 'HH:MI:SS') |
+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+---------------------------+
| 2025-03-04 09:38:56 | 2025/03/04 09:38:56 AM | 3/4/2025 09:38:56 AM | March | NULL |
+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+---------------------------+
1 row in set