日期转换:to_char(date,'格式')
处理日期
1、查看当前系统时间
当前时间为2020年5月14日11时18分51秒
select sysdate from daul;
2、yyyy-mm-dd 格式化
常用的格式化方式
select to_char(sysdate,'yyyy-mm-dd') from daul;
3、yyyy-mm-dd hh24:mm:ss 格式化
select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from daul;
4、yyyy-mm-dd hh24:mi:ss 格式化
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,'格式');
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');
select TO_CHAR(123,'$99,999.9') from dual;
3、用于进制转换:将10进制转换为16进制;
select to_char(4567,'xxxx') from dual;
select to_char(123,'xxx') from dual;
例子:
输入 输出
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') ''
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 !