Oracle|to_char()格式化日期【坑】

2022-05-23 12:35:25 浏览数 (1)

日期转换:to_char(date,'格式')

处理日期

1、查看当前系统时间

当前时间为2020年5月14日11时18分51秒

代码语言:javascript复制
select sysdate from daul;

2、yyyy-mm-dd 格式化

常用的格式化方式

代码语言:javascript复制
select to_char(sysdate,'yyyy-mm-dd') from daul;

3、yyyy-mm-dd hh24:mm:ss 格式化

代码语言:javascript复制
select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from daul;

4、yyyy-mm-dd hh24:mi:ss 格式化

代码语言:javascript复制
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from daul;

5、比较结果查看问题

问题:

当前为11时20分,而第三步格式化方式结果为11时05分

原因:

SQL不区分大小写,在进行格式化的时候Oracle会把“mm/MM”当做月份处理。

Oracle的SQL采用了mi代替分钟,一般开发过程中顺手就会写成“yyyy-mm-dd hh24:mm:ss” .

正确的格式化时分秒的方式为:“yyyy-mm-dd hh24:mi:ss” ,谨记!

如下图参考比对结果:明显第一行数据mm为当前月份

希望各位同学在开发的过程中,尽量避免不必要的

处理数字

1、to_char(number,'格式');

代码语言:javascript复制
select to_char(88877) from dual;
select to_char(1234567890,'099999999999999')  from dual;
select to_char(12345678,'999,999,999,999')  from dual;
select to_char(123456,'99.999')  from dual;
select to_char(1234567890,'999,999,999,999.9999')  from dual;

2、to_char(salary,'$99,99');

代码语言:javascript复制
 select TO_CHAR(123,'$99,999.9') from dual;

3、用于进制转换:将10进制转换为16进制;

代码语言:javascript复制
select to_char(4567,'xxxx') from dual;
select to_char(123,'xxx') from dual;

例子:

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

我是二哥(Jayla)每天总结一点点、每天进步一点点。

Program Change Life !

0 人点赞