oracle数据库中日期字段存放的值为2010-9-9 10:08:18
使用hibernate的本地查询,然后将该值转成java.util.Date时,只能得到2010-9-9 00:00:00
如果使用hibernate的HQL查询,则可以完整得到的。
使用的sql语句如下,其中t1.rtime 和t1.stime是日期类型。select * from (
select t4.oinsid, t4.regnum, t4.soname, t4.portname, t4.regdate, t3.sname, t1.rtime, t1.stime
from wf_translog t1
inner join wf_otrans t2 on t2.oinsid = t1.oinsid
inner join wf_step t3 on t3.stepoinsid = t2.stepoinsid
inner join wf_binst t4 on t4.oinsid = t1.oinsid
where t1.tlogid = (select max(t5.tlogid) from wf_translog t5 where t5.oinsid = t1.oinsid)
union
select t1.oinsid, t1.regnum, t1.soname, t1.portname, t1.regdate, '已归档' as sname, null, null
from wf_binst t1
where not exists(select stepoinsid from wf_step where oinsid = t1.oinsid)
) t where t.regnum like '%20100909012%'
请教各位,如何使用hibernate的本地sql获取到完整的日期?

解决方案 »

  1.   

    to_date(t1.rtime,'YYYY-MM-DD HH24:MI:SS')
      

  2.   

    时间变量类型 改成  java.util.Timestamp 试试
      

  3.   

    这个只对oracle有效
    我那段sql语句是在程序中的,这条sql语句需满足在oracle和MSSQL中都能执行。
      

  4.   

    你数据库里这个日期是用什么类型定义的??varchar2??如果是,那么一楼说的对。
    如果是用Date定义的,那么可以直接取出来的吧?我怎么没遇到这问题?
      

  5.   

    使用hibernate的本地查询查询出来的是java.sql.Date类型,是不能转成java.util.Timestamp
      

  6.   

    是Date类型
    如果使用HQL是可以取到完整的日期,
    但是用hibernate的本地SQL就不行
      

  7.   

    你将 实体类的  时间变量 改成 java.sql.Timestamp 类型试了吗?
      

  8.   

    昏,那你干嘛不用hibernate查询呢???还省去了数据库兼容问题。
      

  9.   

    请问:为什么不能转呢? 用Timestamp应该可以解决问题。 之前要确认你从数据库取出来的值有没有时分秒。 
      

  10.   

    hibernate的hql 不支持 union all,我上面列出的语句不好用hql实现。