数据库——Oracle中常见的日期类型及日期函数
来源:互联网 发布:淘宝上买的轮毂可靠吗 编辑:程序博客网 时间:2024/06/06 00:02
1、常用日期型数据类型
DATE
这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日
date类型在数据库中的存储固定为7个字节,格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
TIMESTAMP(p)
这也是ORACLE常用的日期类型,它与date的区别是不仅可以保存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。
格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形
注:TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。
2、常见问题
如何取当前时间
sysdate–返回当前系统日期和时间,精确到秒
systimestamp–返回当前系统日期和时间,精确到毫秒
如何进行日期运算
日期型数据可以与数值加减得到新的日期,加减数值单位为天
sysdate+1–取明天的当前时间
sysdate-1/24–取当前时间的前一个小时
select sysdate aa,sysdate+5 bb,sysdate+5/24 cc,sysdate-3 dd from dual;
如何求两个日期的间隔时间
可以直接把两个日期相减,返回的单位为天,小时及分秒会换算成小数
select date'2017-10-23'-sysdate 时间差 from dual;
如何将日期转字符
to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’)
如何将字符转日期
to_date(‘2010-02-24 15:01:54’,’YYYY-MM-DD HH24:MI:SS’)
to_timestamp(‘1999-12-01 11:00:00.123456’,’YYYY-MM-DD HH:MI:SS.FF6’)
3、常用日期函数
TO_CHAR(DATE,FORMATSTR)–格式化日期成字符
to_char的其他用法:
SELECT TO_CHAR(date '2010-02-12', 'D') week_dayth,--周第几天(1-7),星期天=1,以此类推TO_CHAR(date '2010-02-12', 'DD') month_dayth,--月第几天TO_CHAR(date '2010-02-12', 'DDD') year_dayth,--年第几天TO_CHAR(date '2010-02-12', 'DAY') weekdayname,--英文星期名_CHAR(date '2010-02-12', 'w') month_weekth,--月第几周(0-4)TO_CHAR(date '2010-02-12', 'ww') year_weekth--年第几周(0-53)FROM DUAL;
TO_DATE(CHAR,FORMATSTR) –将字符转换成日期
to_date(‘2010-02-24 15:01:54’,’YYYY-MM-DD HH24:MI:SS’)
格式备注:HH表示12小时制,HH24为24小时制,MM表月份,MI表分钟
TRUNC(DATE)–返回DATE的日期部分,时间为0点0分0秒
select sysdate 原始,trunc(sysdate) 后来 from dual;
EXTRACT(DATA FROM DATEVALUE)–返回DATE的某一部份内容
如果DATEVALUE为DATE类型,则DATA可以是(YEAR、MONTH、DAY)
如果DATEVALUE为TIMESTAMP类型,则DATA可以是(YEAR、MONTH,DAY、HOUR、MINUTE、SECOND)
select sysdate 原始,EXTRACT(YEAR FROM sysdate) 年份,EXTRACT(MINUTE FROM systimestamp) 分钟 from dual;
ADD_MONTHS(DATE,MONTHS) –在DATE增加月份得到新日期
ADD_MONTHS(sysdate,3) –当前日期加3个月
ADD_MONTHS是一个比较有意思的函数,它会自动处理大小月及闰月,如下所示
select ADD_MONTHS(date '2010-2-12', 1) aa, ADD_MONTHS(date '2010-2-27', 1) bb, ADD_MONTHS(date '2010-2-28', 1) cc, ADD_MONTHS(date '2010-1-31', 1) ddfrom dual;
LAST_DAY(DATE)–返回日期所在月份的最后一天日期
select LAST_DAY(date '2010-2-12') 最后一天 from dual;
NEXT_DAY(DATE,CHAR) –从给定日期开始返回下一个星期几(由char指定)的日期
char可以是中文的星期一~星期日,或英文的Monday~Sunday,还可以是1~7的数字(1表星期日,以此类推)
注:当char为英文时,需切换语言环境(这里的alter session设置的是当前会话的参数,退出即失效)代码如下:alter session set nls_date_language=American; --修改成功alter session set nls_date_language='SIMPLIFIED CHINESE'; --修改回中文
select next_day(date'2017-9-24',6) 下周五 from dual;
TO_YMINTERVAL(CHAR)–返回[年-月]格式构成的时间间隔
一般用于日期加减运算
select date'2010-2-12'+TO_YMINTERVAL('01-02') newdate from dual;
TO_DSINTERVAL(CHAR)–返回[天 时:分:秒]格式构成的时间间隔
一般用于日期加减运算
select date'2017-06-23'+to_dsinterval('1 01:56:23') 天时分秒 from dual;
NUMTOYMINTERVAL(N,CHAR) –返回CHAR中指定单位的时间间隔数值
一般用于日期加减运算,char可以为YEAR,MONTH
select date '2010-2-12' + NUMTOYMINTERVAL(1, 'year') newdate1,date '2010-2-12' + NUMTOYMINTERVAL(1, 'month') newdate2 from dual;
NUMTODSINTERVAL(N,CHAR) –返回CHAR中指定单位的时间间隔数值
一般用于日期加减运算,char可以为DAY,HOUR,MINUTE,SECOND
select date '2010-2-12' + NUMTODSINTERVAL(1, 'DAY') newdate1,date '2010-2-12' + NUMTODSINTERVAL(1, 'HOUR') newdate2from dual;
- 数据库——Oracle中常见的日期类型及日期函数
- Oracle 日期格式类型和日期函数 java操作数据库
- Oracle 日期格式类型和日期函数 java操作数据库
- oracle日期类型函数
- 向Oracle数据库中插入日期类型
- 数据库学习之——Oracle常用的日期函数
- oracle数据库日期字段类型的操作
- Oracle中时间日期格式转换及常用日期函数
- Oracle中常见的日期时间操作
- oracle日期函数及相关查询日期所用的函数
- java日期类型及数据库存储日期
- ORACLE常用日期型函数(函数及类型转换)
- Oracle日期函数:过去、现在及日期的差
- Oracle 时间,日期 类型函数及参数详解
- Oracle中查询日期类型
- Oracle数据库中关于日期和时间字段类型
- Oracle的日期函数
- Oracle的日期函数
- dubbo技术分享
- 【R笔记】R机器学习(二)——非线性回归
- HDU
- socketserver的简单使用
- Laravel 5.5设置跨域访问
- 数据库——Oracle中常见的日期类型及日期函数
- spring mvc项目从简入奢全过程记录(二):最简明的MVC
- Hadoop/Spark推荐系统(四)——推荐链接
- LeetCode.143 Reorder List
- Elimination Game问题及解法
- 【实战】2-4Linux上JDK,Tomcat,Maven安装配置(centOS,阿里云)
- python解方程
- html5学习笔记2 html简介
- Unable to load image ntoskrnl.exe的问题