Oracle:时间类型
Oracle中的时间类型
1、Oracle中的时间类型只有date和TIMESTAMP,TIMESTAMP是比date更精确的类型
⑴DATE类型:ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型
⑵TIMESTAMP类型:ORACLE常用的日期类型,它与date的区别是TIMESTAMP类型不仅可以保存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位
2、日期时间函数用于处理时间类型的数据,Oracle中提供了很多和日期相关的函数。并且包括了日期的加减,在日期的加减是有一些规律
⑴日期 - 数字 = 日期
⑵日期 + 数字 = 日期(天)
⑶日期 - 日期 = 数字(天)
⑷在Oracle中,date类型可以直接进行加减天数,而加减月份要用add_months函数
⑸TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除
3、在Oracle中准确来说一个礼拜是从星期日开始到星期六结束的,其中时间差以天数为单位
Oracle中的date类型
date类型:表示年月日时分秒
⑴其展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS
⑵其存储格式只有一种:YYYY/MM/DD HH24:MI:SS
⑶即,date类型的值在数据库图形界面中可以有不同的显示格式(具体的显示格式由工具设置决定),但其实际储存的格式只有一种
⑷当你只存年月日时,date实际存储的是:年月日0时0分0秒,在plsql中,其展示格式为:YYYY/MM/DD
例1:
Oracle中的timestamp类型
1、date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒
2、timestamp简称时间戳。时间戳可以存储世纪、4位年、月、日、时(以24小时格式)、分、秒。与DATE类型相比,时间戳具有以下优点:
⑴时间戳可以存储秒的小数位
⑵时间戳可以存储时区
3、TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。如果想把DATE类型转换成TIMESTAMP类型,就使用CAST函数
Oracle中的日期格式
格式 | 描述 |
YYYY | 四位表示的年份 |
YYY,YY,Y | 年份的最后三位、两位或一位,缺省为当前世纪 |
MM | 01~12的月份编号 |
MONTH | 九个字符表示的月份,右边用空格填补 |
MON | 三位字符的月份缩写 |
WW | 一年中的星期 |
D | 星期中的第几天 |
DD | 月份中的第几天 |
DDD | 年所中的第几天 |
DAY | 九个字符表示的天的全称,右边用空格补齐 |
HH,HH12 | 一天中的第几个小时,12进制表示法 |
HH24 | 一天中的第几个小时,取值为00~23 |
MI | 一小时中的分钟 |
SS | 一分钟中的秒 |
SSSS | 从午夜开始过去的秒数 |
Oracle时间函数
sysdate
作用:sysdate函数用于返回当前系统的时间(返回date数据类型)
例2:查询
例2_1:插入
sql:insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(3,'王五','China',sysdate,sysdate)
systimestamp
作用:在Oracle中,systimestamp函数返回本机数据库上当前系统日期和时间(包括微秒和时区)
例3:查询
例3_1:插入
insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',systimestamp,systimestamp)
注:可以看出
sysdate函数最好用于date类型的数据,systimestamp最好用于timestamp类型的数据。当然两种可以混用,只是说有点小差别
to_date()
作用:将字符类型按一定格式转化为日期类型
例4:查询数据
例4_1:插入数据
INSERT INTO USER_INFO (ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES (9,'小m',to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2020-07-29 18:00:00','yyyy-mm-dd hh24:mi:ss'))
注:
1、to_date()只能格式化不带毫秒级别的时间型字符串
⑴to_date()的作用是将字符串时间转化为日期类型,日期类型就有年月日时分秒
2、如果字段是一个timetsmp类型的,那么就会默认毫秒级别为0
3、Oracle根据时间来查询数据跟Mysql是有很大区别的
⑴在Mysql中可以直接根据时间字符串来进行查询:SELECT * FROM roleinfo WHERE logintime = "2019-01-25";
⑵在Oracle中根据时间来查询时,就必须先把时间字符串转为date类型
4、小时格式化:不带24时,默认为12小时制,24小时格式转换时需要指明
例4_2:
to_timestamp()
作用:将字符类型按一定格式转化为日期时间戳类型(timestamp类型)
例4_3:查询数据
例4_4:
insert into user_info (ID,
NAME,
COUNTRY,
DATE_TIME,
TIMESTAMP,
DEPT_ID,
EMPLOYEE_NO,
LEADER_NO) values (6,'LL','yy',to_timestamp('2020-07-30 20:30:30.123400','yyyy-mm-dd hh24:mi:ss.ff'),to_timestamp('2020-07-30 20:30:30.123','yyyy-mm-dd hh24:mi:ss.ff3'),1,1,1)
to_char()
1、作用:将日期转按一定格式换成字符类型
2、在格式化timestamp类型的时间值时,可以根据需要来格式化毫秒
⑴ff:6位毫秒值
⑵ff3:3位毫秒值
⑶也可以不带毫秒值
3、如果是在格式化一个date类型的时间值时,那么用于格式字符串就不能加毫秒参数了,date类型中没有毫秒
4、date类型只能精确到秒,要想精确到毫秒,需要使用timestamp类型
例5:查询数据
select to_char(CREATE_TIME,'yyyy-mm-dd hh24:mi:ss'),to_char(UPDATE_TIME,'yyyy-mm-dd hh24:mi:ss.ff') from USER_INFO where CREATE_TIME > to_date('2020-07-29 19:00:00','yyyy-mm-dd hh24:mi:ss');
例5_1:不带毫秒
例5_2:带3位毫秒
例5_3:其他
select to_char(sysdate,'yyyy') as nowYear from dual; --获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; --获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; --获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; --获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; --获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; --获取时间的秒
例5_4:查询数据
注:
虽然sysdate、systimestamp、to_date()、to_timestamp()都可以用于生成一个date类型或timestamp类型,但是会有默认的一些差距。因此还是不要混用的好,字段本身是什么类型就使用对应类型的函数来创建一个时间值
⑴生成一个date类型:使用sysdate或to_date()
⑵生成一个timestamp类型:使用systimestamp或to_timestamp()
⑶将一个date类型或timestamp类型的时间值转为字符串型:使用to_char(),只是说在指定格式化格式时需要区分好
Oracle日期加减
Oracle中日期类型进行加减可以使用多种方式,以下介绍三种
⑴一种是针对天的操作:适用于对日,时,分,秒的操作
⑵一种是对月的操作:适用于月,年的操作
⑶一种是使用INTERVAL函数:适用于年,月,日,时,分,秒的操作
直接加减数字
1、针对天的加减主要是在sysdate上直接进行日,时,分,秒的加减
2、Oracle中使用sysdate函数来获取当前系统时间
方法 | 描述 |
SYSDATE | 当前时间 |
SYSDATE+1 | 加一天 |
SYSDATE+(1/24) | 加一小时 |
SYSDATE+(1/24/60) | 加一分钟 |
SYSDATE+(1/24/60/60) | 加一秒钟 |
SYSDATE-1 | 减一天 |
例6:查询数据
例6_1:插入数据
通过ADD_MONTHS()函数
方法 | 描述 |
ADD_MONTHS(SYSDATE, 1) | 加一月 |
ADD_MONTHS(SYSDATE, -1) | 减一月 |
ADD_MONTHS(SYSDATE, 1*12) | 加一年 |
ADD_MONTHS(SYSDATE, -1*12) | 减一年 |
使用INTERVAL函数
方法 | 描述 |
SYSDATE + INTERVAL '1' YEAR | 加一年 |
SYSDATE + INTERVAL '-1' YEAR | 减一年 |
SYSDATE + INTERVAL '1' MONTH | 加一月 |
SYSDATE + INTERVAL '1' DAY | 加一天 |
SYSDATE + INTERVAL '1' HOUR | 加一小时 |
SYSDATE + INTERVAL '1' MINUTE | 加一分钟 |
SYSDATE + INTERVAL '1' SECOND | 加一秒 |
trunc()函数
说明:Oracle中的trunc()函数是对时间类型或者数字进行截取操作的
语法:TRUNC(number,num_digits)
参数:
⑴Number:需要截尾取整的数字或时间
⑵Num_digits:用于指定取整精度的数字。Num_digits的默认值 0
注:
1、TRUNC()函数截取时不进行四舍五入
2、to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型
处理日期
TRUNC()函数对于日期的处理方式为:截取的部分保留其值,不截取的部分保存为0
方法 | 描述 |
trunc(sysdate,'dd') | 返回当前年月日(精确到天) |
trunc(sysdate,'hh') | 返回当前时间的年月日时部分(精确到小时) |
trunc(sysdate,'mi') | 返回当前时间的年月日时分部分(精确到分钟,没有精确到秒的) |
trunc(sysdate,'mm') | 返回当月第一天 |
trunc(sysdate,'yy') | 返回当年第一天 |
trunc(sysdate,'yyyy') | 返回当年第一天 |
trunc(sysdate,'d') | 返回当前星期的第一天(星期天) |
例7:dd
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(5,'小红',trunc(sysdate,'dd'),trunc(sysdate,'dd'));--精确到天,则时间秒值都为0
例7_1:
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(6,'小明',trunc(sysdate,'hh'),trunc(sysdate,'hh'));--精确到小时,则分秒值为0
例7_2:sysdate还可以进行时间的加减
--在截取时间后,进行时间的加减
INSERT INTO USER_INFO(ID,NAME,CREATE_TIME,UPDATE_TIME) VALUES(7,'小张',(trunc(sysdate,'hh')+2/24),(trunc(sysdate,'hh')+30/24/60));
处理数值
1、TRUNC(n1, n2): 用来根据n2截取n1并返回结果,n2可省略。截取数值是不进行四舍五入
2、n2参数可以为正数也可以为负数
⑴负数表示从小数点左边第一位截取后面全置为零
⑵正数表示小数点后面保留一位
⑶截取整数部分:可以不传n2参数也可以传N2=0
例8:
例8_1:
拓展
timestamp关键字
Oracle中还可以使用timestamp关键字来将将一个时间字符串值转为date类型
例9:
insert into USER_INFO (ID,NAME,COUNTRY,DATE_TIME,TIMESTAMP) values(4,'李六','China',timestamp '2020-07-30 20:30:30',timestamp '2020-07-30 20:30:30.55555')
查询数据库系统时间
SELECT SYSDATE FROM DUALselect to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual--oracle中不能省略from关键字,dual这个表是oracle自带的表,因此可以直接使用
Oracle:时间类型相关推荐
- oracle时间类型
oracle时间类型 date: 最普通的,精确到秒; to_date timestamp:精确到毫秒; to_timestamp timestamp with local timezone:写入的时 ...
- oracle 详细时间类型,Oracle 时间类型
Oracle 时间类型有两种:1 秒级的 DATE,2 毫秒级的 TIMESTAMP(3)1 字符串转DATE格式:to_date('时间字符串', 'YYYY-MM-DD HH24:MI:SS')例 ...
- oracle数据库日期格式的运算,Oracle时间类型date,timestamp时间差计算
Oracle的时间类型有两种date和timestamp. date精确到秒,timestamp精确到毫秒. 1.计算date类型的时间差 可以先把年,月,日,小时,分,秒用to_char函数拆分 ...
- oracle时间类型转化成java对象_Oracle数据库date类型与Java中Date的联系与转化
以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助. new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当 ...
- oracle闰月29号,Oracle 时间类型
1.常用日期型数据类型 1.1.DATE这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型.DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12 ...
- oracle时间类型插入,oracle 插入时间字符串 Date类型
和MysqL不同,MysqL 可以直接插入 时间字符串的, UPDATE HR_EFF_EVALUATOR SET LEVEL_ = '2', ROLE_NAME_ = '他评', ASSESS_RO ...
- oracle如何查询时间格式,oracle时间格式讨论
1. oracle对时间格式的数据存贮 Oracle以特定的存储格式来存储时间,占7个字节,与查询显示的时间无关.存贮的时间包括年月日时分秒,最小精度为秒,不存贮秒以下的时间单位.因此在一些前台支持毫 ...
- Oracle全球化 —— 时间类型、时区与时间函数
最近遇到一个表中数据时区不对的问题,排查思路一般是看表字段类型.看时区以及看插入时间的方法.Oracle官方文档<Database Globalization Support Guide> ...
- oracle时间24小时格式转换,在oracle数据库中查询时间并转为24小时制--------------String转Date类型或者Date转String类型...
1.在Oracle数据库中查询时间的时候,首先就是把日期从date类型的转化为String类型的. 2.将date类型的转成String类型的,直接调用传入date类型的参数,返回String类型的字 ...
最新文章
- 《数学之美》第13章 Google AK-47的设计者—阿米特.辛格博士
- 注册ETM钱包瓜分糖果 更有机会独享8888元现金奖励
- wpa_supplicant drivers 查看跟踪
- 增加自增列 耗时长_又一批长事务,P0故障谁来背锅?
- postgresql 安装_CentOS7安装使用PostgreSQL数据库
- 区块链(1)——以太坊下载安装(我营销?营销个屁)
- 2020蓝桥杯省赛---java---B---3(蛇形填数)
- cd1101d 树形dp
- 谷歌开源 Python Fire:可自动生成命令行接口
- muck数据的概念理解
- _bzoj1007 [HNOI2008]水平可见直线【单调栈】
- MOSS2010事件接收器开发以及自定义错误提示页
- JDBC常用API和使用
- springboot项目打jar包部署到linux中
- linux 搭建技术博客,Linux NTP服务器搭建精讲
- RabbitMQ 中的 VirtualHost 该如何理解
- 电脑无法新建文件怎么办?
- Runaway Robot游戏通关算法实现过程总结
- 2.3-非平稳时间序列分析
- Unity个人版设置黑色主题
热门文章
- LeetCode:205(Python)—— 同构字符串(简单)
- 获得淘口令真实url API
- 有一份程序员脱单攻略,请查收
- 小米note android原生壁纸,安卓福利分享:全新三星Note8原生壁纸 每一张都是三星扛鼎之作!...
- 每日新闻丨芯片不突破AI发展就是空中阁楼;2025年蜂窝物联网连接数将达23亿...
- vue打包生成的js文件过大优化
- msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsign
- Jquery图片自适应
- 多网卡电脑野外作业建议
- 超级完整的 Git的下载、安装、配置与使用 以及命令