Oracle入门学习系列笔记(四)之日期操作
Oracle入门学习系列笔记(四)之日期操作
ORACLE中的DATE和TIMESTAMP
文章目录
说明: 本文档为本人学习Oracle过程中整理的相关笔记,供大家学习时参考,如有不妥之处,请大家指正
介绍
Oracle中表示字符串常用的两种类型为DATE和TIMESTAMP,本文介绍的是这两种类型的相关特性及相关函数操作
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;
TIMESTAMP类型
- ORACLE中常用的日期类型
- 与DATE的区别是不仅可以保存日期和时间,还能保存小数秒,最高精度可以到ns(纳秒)
- 数据库内部用7或者11个字节存储,精度为0,用7个字节存储,与DATE功能相同,精度大于0则用11字节存储
-
格式为:
- 第1字节–第7字节:和DATE相同
- 第8-11字节:纳秒, 采用4字节存储,内部运算类型为整型
SYSTIMESTAMP函数
-
内部函数,返回当前系统日期和时间,精确到毫秒
-
例如:
select systimestamp from dual;
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;
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;
LAST_DAY函数
-
LAST_DAY(date):返回日期date所在月的最后一天
-
在按照自然月计算某些业务逻辑,或者安排月末周期性活动时很有用处
-
例如:
SELECT LAST_DAY(SYSDATE) LASTD FROM DUAL;
SELECT LAST_DAY('30-1月-18') LST FROM DUAL;
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;
如果你觉得本笔记对你有帮助,请扫码给予支持,金额随意