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

来源:互联网 发布:淘宝的淘金币在哪里 编辑:程序博客网 时间:2024/06/05 15:55

一、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'));






原创粉丝点击