[Oracle] TO_CHAR()函数
TO_CHAR() 是Oracle中极其重要的转换函数,主要用于将数值、日期或时间戳等数据类型转换为指定格式的字符串
语法格式
TO_CHAR(expression, format, nls_parameters)
参数说明
expression:要转换的表达式(数值、日期或时间戳)
format:指定输出字符串的格式模型(可选)
nls_parameters:指定国家语言支持参数(可选)
format参数常用格式元素
格式元素 | 说明 |
9 | 数字位(不显示前导零) |
0 | 数字位(显示前导零) |
. | 小数点 |
D | 小数点 |
, | 千位分隔符 |
G | 千位分隔符 |
$ | 美元货币符号 |
MI | 在右侧显示负号 |
PR | 将负数用尖括号<>括起来 |
EEEE | 科学计数法 |
YYYY | 年份数字(4位) |
YEAR | 年份的英文拼写 |
MM | 月份数字(01-12) |
MONTH | 月份的全名 |
DD | 一月中的第几天(01-31) |
DAY | 星期的全名 |
Q | 季度 |
HH24 | 小时(00-23) |
MI | 分钟(00-59) |
SS | 秒(00-59) |
FF | 毫秒(1-9位) |
数值转换字符串示例
SELECT TO_CHAR(0.123) FROM dual; -- '.123'SELECT TO_CHAR(1234.56) FROM dual; -- '1234.56'SELECT TO_CHAR(1234.56, '$9,999.99') FROM dual; -- '$1,234.56'SELECT TO_CHAR(123, '09999') FROM dual; -- '00123'SELECT TO_CHAR(123456789, '9.999EEEE') FROM dual; -- '1.235E+08'SELECT TO_CHAR(-1234.56, '9,999.99MI') FROM dual; -- '1,234.56-'SELECT TO_CHAR(-1234.56, '9,999.99PR') FROM dual; -- '<1,234.56>'SELECT TO_CHAR(1234.56, '9G999D99', 'NLS_NUMERIC_CHARACTERS='',.''') -- '1.234,56'
FROM dual;
日期转换字符串示例
-- 假设当前日期是2025-08-04 11:17:16
SELECT TO_CHAR(SYSDATE,'YYYY') as nowYear FROM dual; -- '2025'SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual; -- '2025-08-04'SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual; -- '2025-08-04 11:17:16'SELECT TO_CHAR(SYSDATE, 'YEAR MONTH DAY') FROM dual; -- 'TWENTY TWENTY-FIVE 8月 星期一'SELECT TO_CHAR(SYSDATE, 'YYYY"年"Q"季度"') FROM dual; -- '2025年3季度'SELECT TO_CHAR(SYSDATE, '"今天是"YYYY"年"MM"月"DD"日"') FROM dual; -- '今天是2025年08月04日'SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"', 'NLS_DATE_LANGUAGE=JAPANESE') -- 2025年08月04日
FROM dual;
时间戳转换为字符串示例
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3') FROM dual; -- '2025-08-04 11:19:44.531'SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF6') FROM dual; -- '2025-08-04 11:19:44.614245'