Oracle入门学习系列笔记(四)之日期操作

Oracle入门学习系列笔记(四)之日期操作

ORACLE中的DATE和TIMESTAMP


说明: 本文档为本人学习Oracle过程中整理的相关笔记,供大家学习时参考,如有不妥之处,请大家指正

介绍

Oracle中表示字符串常用的两种类型为DATE和TIMESTAMP,本文介绍的是这两种类型的相关特性及相关函数操作

ORACLE中的日期操作
DATE
SYSDATE
TIMESTAMP
SYSTIMESTAMP
常用函数
TO_DATE
TO_CHAR
LAST_DAY
ADD_MONTHS

DATE类型

  • ORACLE中最常用的日期类型,用来保存日期和时间
  • DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日
  • DATE类型在数据库中的存储固定为7个字节,格式为:
    • 第1个字节:世纪+100
    • 第2个字节:年
    • 第3个字节:月
    • 第4个字节:天
    • 第5个字节:小时+1
    • 第6个字节:分+1
    • 第7个字节:秒+1

SYSDATE函数

  • 其本质是一个ORACLE的内部函数,返回当前的系统时间,精确到秒
  • 默认的显示格式是DD-MON-RR
  • 例如:

select sysdate from dual;

Oracle入门学习系列笔记(四)之日期操作

TIMESTAMP类型

  • ORACLE中常用的日期类型
  • 与DATE的区别是不仅可以保存日期和时间,还能保存小数秒,最高精度可以到ns(纳秒)
  • 数据库内部用7或者11个字节存储,精度为0,用7个字节存储,与DATE功能相同,精度大于0则用11字节存储
  • 格式为:
    • 第1字节–第7字节:和DATE相同
    • 第8-11字节:纳秒, 采用4字节存储,内部运算类型为整型

SYSTIMESTAMP函数

  • 内部函数,返回当前系统日期和时间,精确到毫秒

  • 例如:


select systimestamp from dual;

Oracle入门学习系列笔记(四)之日期操作

TO_DATE函数

  • TO_DATE(char[,fmt[,nlsparams]]):将字符串按照定制格式转换为日期类型

    • char:要转换的字符串
    • fmt:格式
    • nlsparams:指定日期语言
  • 常用的日期格式见下表:

YY 2位数字的年份
YYYY 4位数字的年份
MM 2位数字的月份
MON 简拼的月份
MONTH 全拼的月份
DD 2位数字的天
DY 周几的缩写
DAY 周几的全拼
HH24 24小时制的小时
HH 12小时制的小时
MI 分钟
SS
  • 例如:

SELECT TO_DATE('2019-01-01 13:01:31','YYYY-MM-DD HH24:MI:SS') AS DTE FROM DUAL;

Oracle入门学习系列笔记(四)之日期操作

TO_CHAR 函数

  • 将其他类型的数据转换为字符类型

  • TO_CHAR(date[,fmt[,nlsparams]]):将日期类型数据date按照fmt的格式输出字符串,nlsparams用于指定日期语言

  • 例如:


SELECT TO_CHAR(BIR_DATE,'YYYY-MM-DD') AS BIRDATE FROM DAVID.STU_INF;
SELECT TO_CHAR(BIR_DATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS') AS BIRDATE FROM DAVID.STU_INF;


Oracle入门学习系列笔记(四)之日期操作

LAST_DAY函数

  • LAST_DAY(date):返回日期date所在月的最后一天

  • 在按照自然月计算某些业务逻辑,或者安排月末周期性活动时很有用处

  • 例如:


SELECT LAST_DAY(SYSDATE) LASTD FROM DUAL;
SELECT LAST_DAY('30-1月-18') LST FROM DUAL;

Oracle入门学习系列笔记(四)之日期操作

ADD_MONTHS函数

  • ADD_MONTHS(date,i) : 返回日期date加上i个月后的日期值

    • 参数i可以是任何数字,大部分时候取正整数
    • 如果i是小数,则将会被截取整数后在参与运算
    • 如果i是负数,则获得的是减去i个月后的日期值
  • 例如:


SELECT ADD_MONTHS(BIR_DATE,8) AS ADDM FROM DAVID.STU_INF;
SELECT ADD_MONTHS(SYSDATE,10) AS ADDM FROM DAVID.STU_INF;

Oracle入门学习系列笔记(四)之日期操作


如果你觉得本笔记对你有帮助,请扫码给予支持,金额随意

Oracle入门学习系列笔记(四)之日期操作