锁定老帖子 主题:oracle中时间字段类型的出现问题!
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-12-23
<property name="pubTime" type="timestamp" column="PubTime"/> 用默认的时间: private java.util.Date pubTime = new java.util.Date( ); 插入到数据库中取出后结果是:2003年12月22日 00:00:00 改成: <property name="pubTime" type="date" column="PubTime"/> 用的还是默认时间: private java.sql.Date pubTime = new java.sql.Date( new java.util.Date().getTime() ); 插入到数据库中取出后结果还是:2003年12月22日 00:00:00 2003年12月23日 00:39:53 我想得到的是连时分秒都有的,请问该怎么用?这种现象为什么会出现?我的Oracle是8.1.7 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-12-23
public class Oracle9Dialect extends Dialect { public Oracle9Dialect(); { super();; registerColumnType( Types.BIT, "NUMBER(1,0);" );; registerColumnType( Types.BIGINT, "NUMBER(19,0);" );; registerColumnType( Types.SMALLINT, "NUMBER(5,0);" );; registerColumnType( Types.TINYINT, "NUMBER(3,0);" );; registerColumnType( Types.INTEGER, "NUMBER(10,0);" );; registerColumnType( Types.CHAR, "CHAR(1);" );; registerColumnType( Types.VARCHAR, "VARCHAR2($l);" );; registerColumnType( Types.FLOAT, "FLOAT" );; registerColumnType( Types.DOUBLE, "DOUBLE PRECISION" );; registerColumnType( Types.DATE, "DATE" );; registerColumnType( Types.TIME, "DATE" );; registerColumnType( Types.TIMESTAMP, "DATE" );; //registerColumnType( Types.VARBINARY, "RAW" );; registerColumnType( Types.VARBINARY, "LONG RAW" );; registerColumnType( Types.VARBINARY, 255, "RAW($l);" );; registerColumnType( Types.NUMERIC, "NUMBER(19, $l);" );; registerColumnType( Types.BLOB, "BLOB" );; registerColumnType( Types.CLOB, "CLOB" );; public class OracleDialect extends Oracle9Dialect 也就是说这些类型Hibernate都用Oracle的Date表示了。 |
|
返回顶楼 | |
发表时间:2003-12-23
你用date它会把后面的时间弄掉。
<property name="creationTime" type="java.sql.Timestamp" update="true" insert="true" column="creationTime" /> |
|
返回顶楼 | |
发表时间:2003-12-23
在sql*plus下修改
update leave set pubtime=to_date('2003-12-23 10:25:23','YYYY-MM-DD HH:MI:SS'); 得出来的还是2003年12月23日 00:00:00 用的是df.format( leave.getPubTime() ); 用df.format( new Date() ); 得出的是正确的:2003年12月23日 10:56:32 改用jdbc连接数据库,取得的结果照样还是2003年12月23日 00:00:00(包括从sql*plus中插入进去的数据也一样是) 可能是数据库的原因,还在找. |
|
返回顶楼 | |
发表时间:2003-12-23
to smallduzi
是指oracle中的date字段会把时间的后半部分截掉吗? |
|
返回顶楼 | |
发表时间:2003-12-23
rain999 写道 to smallduzi
是指oracle中的date字段会把时间的后半部分截掉吗? 不会! |
|
返回顶楼 | |
发表时间:2003-12-23
明白了,是java中的date的原因,是不是得用Calendar?
|
|
返回顶楼 | |
发表时间:2003-12-23
private java.util.Date pubTime = new java.util.Date( );
没有时间的。 你刚开始做的是对的。 setCreationTime(new Timestamp(System.currentTimeMillis())); |
|
返回顶楼 | |
发表时间:2003-12-23
谢谢:)我去试一下!
setCreationTime(new Timestamp(System.currentTimeMillis())); 是指用 Timestamp time = new Timestamp(System.currentTimeMillis())); 来代替 java.util.Date pubTime = new java.util.Date( ); 吗? |
|
返回顶楼 | |
发表时间:2003-12-23
非常感谢smallduzi,时间终于出来了,高兴ing~~~~~~~~~~~~~~~
|
|
返回顶楼 | |