暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 中常见的三种日期格式转换函数

SQL数据库运维 2022-11-04
13412

点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!

Oracle DATE、TIMESTAMP数据类型简介

Oracle 数据库版本是:Oracle 11g

Oracle提供了两种日期时间数据类型:DATE
TIMESTAMP
用于存储时间点数据。

DATE数据类型允许以一秒的精度存储包括日期和时间的时间点值。

DATE数据类型存储年份(包括世纪),月份,日期,小时数,分钟数和秒数。它的范围从公元前4712年1月1日到公元9999年12月31日(共同时代)。

Oracle数据库有其自己的专用格式来存储日期数据。它使用7个字节的固定长度的字段,每个字段对应于世纪,年,月,日,时,分和秒来存储日期数据。

常用的2个日期函数:SYSDATE, SYSTIMESTAMP(时间戳)

    SELECT SYSDATE , SYSTIMESTAMP FROM dual ;
    注意:SYSDATESYSTIMESTAMP 函数的时间精度不一样SYSDATE 精确到秒; 如果要定义SYSTIMESTAMP
    列,可以使用以下语法:
      column_name TIMESTAMP[(fractional_seconds_precision)]
      fractional_seconds_precision指定SECOND字段小数部分的位数。它的范围从0到9,这意味着可以使用TIMESTAMP数据类型来存储到纳秒的精度。如果省略fractional_seconds_precision
      ,则默认TIMESTAMP  
      是可以精确到秒的后6位。

      1.Oracle日期格式

      以下语句查询NLS_DATE_FORMAT参数的当前值:

        SELECT
        value
        FROM
        V$NLS_PARAMETERS
        WHERE
        parameter = 'NLS_DATE_FORMAT';

        可以查询出在当前Oracle数据库系统中,NLS_DATE_FORMAT的值是:

          YYYY-MM-DD

          以下语句通过使用sysdate函数以YYYY-MM-DD日期格式返回当前日期。

            SELECT
            sysdate
            FROM
            dual;

            执行上面查询语句,得到以下结果

            2. 使用TO_CHAR()函数将日期转换字符串

            TO_CHAR()函数采用DATE值作为参数,根据指定的格式对其进行格式化,并返回一个日期字符串。

            例如,要以特定的格式显示当前的系统日期,请按如下所示使用TO_CHAR()函数:

              SELECT
              TO_CHAR( SYSDATE, 'MM/DD/YYYY HH24:MI:SS' )
              FROM
              dual;

              执行上面查询语句,得到以下结果

              TO_CHAR()
              函数用于
              显示月份名称的语言由NLS_DATE_LANGUAGE参数控制:

                SELECT
                value
                FROM
                V$NLS_PARAMETERS
                WHERE
                parameter = 'NLS_DATE_LANGUAGE';

                执行上面查询语句,得到以下结果

                TO_CHAR()
                函数常用转换

                  SELECT
                    TO_CHAR(SYSDATE , 'yyyy'AS 年份 ,-- 年份
                  TO_CHAR(to_date('2022-07-01', 'yyyy-mm-dd'), 'q') AS 季度 ,-- 季度
                  TO_CHAR(SYSDATE , 'mm') AS 月份 ,-- 月份
                  TO_CHAR(SYSDATE , 'dd') AS 日, -- 每月的第几天
                  TO_CHAR(SYSDATE , 'd') AS "日(周)", -- 每周第几天(第一天是周日)
                  TO_CHAR(SYSDATE , 'ddd') AS "日(年)" , -- 每年的第几天
                  TO_CHAR(SYSDATE , 'ww') AS "周(年)", -- 每年的第几周
                  TO_CHAR(to_date('2022-01-08', 'yyyy-mm-dd') , 'ww') AS "周(年)" -- 每年的第几周
                  FROM
                  dual ;

                  执行上面查询语句,得到以下结果

                  3. TO_DATE()或TO_TIMESTAMP()将字符串转换为日期

                  由于Oracle使用内部格式来存储DATE数据,因此在将日期值存储到日期列之前,通常必须将字符串转换为日期值。
                  要转换不是标准格式的日期值,可以使用带有格式字符串的TO_DATE()或TO_TIMESTAMP()函数。

                    SELECT
                    TO_DATE('2022-10-26 17:48:55', 'yyyy-mm-dd hh24:mi:ss' )
                    FROM
                    dual;
                      SELECT
                      TO_TIMESTAMP('2022-10-26 17:48:55.114', 'yyyy-mm-dd hh24:mi:ss.ff3') AS "t1"
                      , TO_TIMESTAMP('2022-10-26 17:48:55', 'yyyy-mm-dd hh24:mi:ss') AS "t1"
                      FROM
                      dual ;

                      执行上面查询语句,得到以下结果

                      点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。


                      动动小手点击加关注呦☟☟☟

                      文章转载自SQL数据库运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论