跳到主要内容

TO_CHAR(datetime)

描述

该函数用于将日期时间类型的值转换为 VARCHAR 类型的数据。

语法声明

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返回一周之中的某天,不过返回的是星期几。:::info 该格式和语言设置有关系,在中国环境 NLS_DATE_LANGUAGE = SIMPLIFIED CHINESE,用星期一到星期天表示。:::
DD返回月份中的某天(1 至 31)。
DDD返回年份中的某天(1 至 366)。
DL返回长的日期格式。受到 NLS_TERRITORYNLS_LANGUAGE 参数控制。
DS返回短的日期格式。受到 NLS_TERRITORYNLS_LANGUAGE 参数控制。
E表示纪元简称,但是只适合以下集中日历:日本皇室、中华民国、泰国佛历。
FF [1..9]就是毫秒,如果不更上数字就是用默认的精度。只能用于 TIMESTAMP 类型的。
FM不返回任何内容。
HH/HH12表示小时,为 12 小时制(1 至 12)。
HH24表示小时,为 24 小时制(0 至 23)。
IWISO 标准的星期序号(1 至 52 或者 1 至 53)。
IYYYIYYIYI返回 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 设置的时区对应。包括下面三个 TZHTZMTZR,都是和时区相关,并不是直接用在 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。
YYYYYYYYYY表示后面 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 (0.001 sec)

相关文档