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

2024年 6月 30日 60.7k 0

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

处理日期

1、查看当前系统时间

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

    select sysdate from daul;

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

    2、yyyy-mm-dd 格式化

    常用的格式化方式

      select to_char(sysdate,'yyyy-mm-dd') from daul;

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

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

        select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from daul;

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

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

          select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from daul;

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

          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为当前月份

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

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

          处理数字

          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'

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

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

                  Program Change Life !

                  相关文章

                  Oracle如何使用授予和撤销权限的语法和示例
                  Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
                  下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
                  社区版oceanbase安装
                  Oracle 导出CSV工具-sqluldr2
                  ETL数据集成丨快速将MySQL数据迁移至Doris数据库

                  发布评论