认真生活,因为生活只有一次

 

 

格式化函数 to_char:

 

 

函数 返回 描述 例子
to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp 'now','HH12:MI:SS')
to_char(int, text) text 把 int4/int8 转换成 string to_char(125, '999')
to_char(float, text) text 把 float4/float8 转换成 string to_char(125.8, '999D9')
to_char(numeric, text) text 把 numeric 转换成 string to_char(numeric '-125.8', '999D99S')
to_date(text, text) date 把 string 转换成 date to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) date 把 string 转换成 timestamp to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_number(text, text) numeric 把 string 转换成 numeric to_number('12,454.8-', '99G999D9S')

 

 

 

date/time 转换

 

 

模板 描述
HH 一天的小时数 (01-12)
HH12 一天的小时数 (01-12)
HH24 一天的小时数 (00-23)
MI 分钟 (00-59)
SS 秒 (00-59)
SSSS 午夜后的秒 (0-86399)
AM or A.M. or PM or P.M. 正午标识(大写)
am or a.m. or pm or p.m. 正午标识(小写)
Y,YYY 带逗号的年(4 和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
BC or B.C. or AD or A.D. 年标识(大写)
bc or b.c. or ad or a.d. 年标识(小写)
MONTH 全长大写月份名(9字符)
Month 全长混合大小写月份名(9字符)
month 全长小写月份名(9字符)
MON 大写缩写月份名(3字符)
Mon 缩写混合大小写月份名(3字符)
mon 小写缩写月份名(3字符)
MM 月份 (01-12)
DAY 全长大写日期名(9字符)
Day 全长混合大小写日期名(9字符)
day 全长小写日期名(9字符)
DY 缩写大写日期名(3字符)
Dy 缩写混合大小写日期名(3字符)
dy 缩写小写日期名(3字符)
DDD 一年里的日子(001-366)
DD 一个月里的日子(01-31)
D 一周里的日子(1-7;SUN=1)
W 一个月里的周数
WW 一年里的周数
CC 世纪(2 位)
J Julian 日期(自公元前4712年1月1日来的日期)
Q 季度
RM 罗马数字的月份(I-XII;I=JAN)-大写
rm 罗马数字的月份(I-XII;I=JAN)-小写

 

 

to_char 数字转换模板

 

 

模板 描述
9 带有指定位数的值
0 前导零的值
. (句点) 小数点
, (逗号) 分组(千)分隔符
PR 尖括号内负值
S 带负号的负值(使用本地化)
L 货币符号(使用本地化)
D 小数点(使用本地化)
G 分组分隔符(使用本地化)
MI 在指明的位置的负号(如果数字 < 0)
PL 在指明的位置的正号(如果数字 > 0)
SG 在指明的位置的正/负号
RN 罗马数字(输入在 1 和 3999 之间)
TH or th 转换成序数
V 移动 <tt>n</tt> 位(小数)(参阅注解)
EEEE 科学记数。现在不支持。

 

栗子:

 

SELECT to_char(-12'S9999'FROM DUAL

 

结果就是负数:-12

 

to_char 的一些栗子

 

输入 输出
to_char(sysdate,'Day, HH12:MI:SS') <tt>'Tuesday , 05:39:18'</tt>
to_char(sysdate,'FMDay, HH12:MI:SS') <tt>'Tuesday, 05:39:18'</tt>
to_char(-0.1,'99.99') <tt>' -.10'</tt>
to_char(-0.1,'FM9.99') <tt>'-.1'</tt>
to_char(0.1,'0.9') <tt>' 0.1'</tt>
to_char(12,'9990999.9') <tt>' 0012.0'</tt>
to_char(12,'FM9990999.9') <tt>'0012'</tt>
to_char(485,'999') <tt>' 485'</tt>
to_char(-485,'999') <tt>'-485'</tt>
to_char(1485,'9,999') <tt>' 1,485'</tt>
to_char(1485,'9G999') <tt>' 1 485'</tt>
to_char(148.5,'999.999') <tt>' 148.500'</tt>
to_char(148.5,'999D999') <tt>' 148,500'</tt>
to_char(3148.5,'9G999D999') <tt>' 3 148,500'</tt>
to_char(-485,'999S') <tt>'485-'</tt>
to_char(-485,'999MI') <tt>'485-'</tt>
to_char(485,'999MI') <tt>'485'</tt>
to_char(485,'PL999') <tt>'+485'</tt>
to_char(485,'SG999') <tt>'+485'</tt>
to_char(-485,'SG999') <tt>'-485'</tt>
to_char(-485,'9SG99') <tt>'4-85'</tt>
to_char(-485,'999PR') <tt>'<485>'</tt>
to_char(485,'L999') <tt>'DM 485</tt>
to_char(485,'RN') <tt>' CDLXXXV'</tt>
to_char(485,'FMRN') <tt>'CDLXXXV'</tt>
to_char(5.2,'FMRN') <tt>V</tt>
to_char(482,'999th') <tt>' 482nd'</tt>
to_char(485, '"Good number:"999') <tt>'Good number: 485'</tt>
to_char(485.8,'"Pre-decimal:"999" Post-decimal:" .999') <tt>'Pre-decimal: 485 Post-decimal: .800'</tt>
to_char(12,'99V999') <tt>' 12000'</tt>
to_char(12.4,'99V999') <tt>' 12400'</tt>
to_char(12.45, '99V9') <tt>' 125'</tt>

to_char函数简单的应用:

Select TO_CHAR(1.0123FROM DUAL结果:1.0123Select TO_CHAR(123.023223,'FM9999999.0099')  FROM DUAL结果:123.0232Select to_char(sysdate,'Day, HH12:MI:SS')  FROM DUAL结果:星期一, 04:08:26
Select to_char(sysdate,'Day, HH24:mi:SS')  FROM DUAL
结果:星期一, 16:08:27
 

https://mp.weixin.qq.com/s/AA0inN5sjqkH-VYk9badtg