oracle获取Date类型字段无时分秒Data和Timestamp比较

一、oracle 时间类型的简介

测试表:

create table dataTest(
date1 Date,
timestamp1 Timestamp);
测试1:
插入一条数据:
insert into dataTest values(to_date('2017-01-01','yyyy-mm-dd'),to_date('2018-02-02','yyyy-mm-dd'));
查询结果:


测试2:

插入一条数据:

insert into dataTest values(to_date('2017-01-01 11:11:11','yyyy-mm-dd hh24:mi:ss'),to_date('2018-02-02 11:11:11','yyyy-mm-dd hh24:mi:ss'));

查询结果:

date类型存储数据的格式为年月日时分秒,可以精确到秒

timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位)

timestamp可以存储数据最大精度为纳秒(9),但默认存储的精度为微秒(6)

Oracle定义语法:TIMESTAMP [(precision)]      precision 的范围为0到9, 默认为6. 默认的可以写作timestamp或者timestamp(6)

-- 建表包含timestamp类型.
SQL> create table tb__order(create_time timestamp);
SQL> insert into tb__order values(TO_TIMESTAMP('2006-12-01 12:12:09.123456789', 'YYYY-MM-DD HH24:MI:SS.FF'));
创建表时没有指定timestamp的精度范围,所以默认是6,添加数据时FF就是精度范围,而添加的数据是9位,那么存储数据时会四舍五入存储到6位,
所以存储结果是'2006-12-01 12:12:09.123457'
如果想使用更高的精确度就需要建表时指定了. (一般用不到)
SQL> create table tb__order(create_time timestamp(9));



从上面可以终结出。如果我们要求的时间精度只到秒级,两种类型都是满足要求的。


二、mybatis中date类型无法获取时分秒

我们无法获取时分秒的原因不在oracle,主要是我们的程序问题。
出现这种情况有两种可能,1、程序在读取时间的时候丢掉了是否秒。2、程序在写入时间的时候丢掉了时分秒,
1.读取时间是否会丢掉时分秒
插入一条数据:
 insert into datatest(date1,TIMESTAMP1) values(TO_date('2017-01-10 01:01:01','yyyy-mm-dd hh24:mi:ss'),TO_date('2017-01-10 01:01:01','yyyy-mm-dd hh24:mi:ss'));






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值