java.sql.Date 只存储日期数据不存储时间数据
// 会丢失时间数据
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
//可以这样来处理
preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
取数据:
//想要得到完整的数据,包括日期和时间,可以这样
java.util.Date d = resultSet.getTimestamp(1);
//这样处理更合适一些,可以避免一些潜在Timestamp 问题
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());
往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date对象的long值,再以这个long值 构造一个Timestamp对象 存进数据库中。
从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个java.util.Date对象,这样就可以对这个Date对象操作了。例如 new SimpleTimeFormat("yyyyy-MM-dd HH:mm:ss").format()等等
反思:处理数据:
model:util date po:util date (因为有完成的精准数据)
数据库定义字段:timestamp
取:java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime()); Date对象操作了。例如 new SimpleTimeFormat("yyyyy-MM-dd
存:preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
反思:处理数据:
model:String po:String
数据库定义字段:date (这个字段 跟sql.date 包不一样 ,可以有时分秒,但是没有毫秒)
取:to_char() mysql:str_to_stamp()
存:to_date(), t0_timestap()
去点 不能精确到毫秒,会丢失唯一具体时间,不能在集群的数据操作的单线程进行唯一标识,当是不同类型数据库时,不通用。
select sysdate,systimestamp from dual;
select systimestamp(6) from dual;
select * from dual where to_char(systimestamp,'yyyymmdd hh24:mi')='20160101 11:14';
insert into timedemo (id,sjc,sjc2,sj)values('1',systimestamp,systimestamp,sysdate);
select do.id, do.sjc,do.sjc2,do.sj,do.rowid from timedemo do
insert into timedemo (id,sjc,sjc2,sj)values('1', to_timestamp('2008-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),systimestamp,sysdate);
insert into test values(
to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),
insert into timedemo (id,sjc,sjc2,sj)values('1', to_timestamp(to_char(systimestamp, 'yyyy-mm-dd HH24:mi:ss.ff'),'yyyy-mm-dd hh24:mi:ss.ff'),systimestamp,sysdate);
insert into timedemo (id,sjc,sjc2,sj)values('1', to_timestamp(to_char(systimestamp, 'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss.ff'),systimestamp,sysdate);
Date date = new Date();
long rightTime = date.getTime();
ResultSet rs = null;
PreparedStatement ps=null;
ps.setDate(parameterIndex, x)te(1, x);