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_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 (0.001 sec)