我用的IBATIS2.3插入一个表的DATE型字段,插入的new Date(),记得前不久都可以正常显示年月日时分秒的,不知道后来怎么的,插入的都是年月日,没有时分秒了,用to_char函数去看mi hh ss结果都是00。其中2010-01-12 08:43:31是我用SQL命令插入的SQL> select to_char(createdate,'yyyy-mm-dd hh24:mi:ss') from subscriber;TO_CHAR(CREATEDATE,
-------------------
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-12 08:43:31
2010-01-11 00:00:00
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:0011 rows selected.其中代码:
Subscriber subs = new Subscriber();
subs.setSubsid(new Long(1000000011));
subs.setCreatedate(new Date());
subs.setRegion(new Short((short) 1));
subs.setActive(new Short((short) 0));
subs.setStatus("primary");
reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMap.startTransaction();
sqlMap.insert("SCOTT_SUBSCRIBER.ibatorSubscriber_insert_seq", subs);
sqlMap.commitTransaction();
谢谢各位大侠解惑!
-------------------
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-12 08:43:31
2010-01-11 00:00:00
2010-01-12 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:00
2010-01-11 00:00:0011 rows selected.其中代码:
Subscriber subs = new Subscriber();
subs.setSubsid(new Long(1000000011));
subs.setCreatedate(new Date());
subs.setRegion(new Short((short) 1));
subs.setActive(new Short((short) 0));
subs.setStatus("primary");
reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMap.startTransaction();
sqlMap.insert("SCOTT_SUBSCRIBER.ibatorSubscriber_insert_seq", subs);
sqlMap.commitTransaction();
谢谢各位大侠解惑!
解决方案 »
- 急急急!! ssh框架 添加数据运行无问题 事物提交 但数据库无数据
- 急……项目发布后java写的打印功能失效了---求解
- 如何在控制台编译servlet类
- 选择 在MVC设计模式中,()接收用户请求数据。
- access数据库的方言怎么设置
- 如何将List里的数据换位置?
- Hibernate存向数据库存入文件,大小翻倍
- 这个request 如何用??
- struts里的formbean里的一个属性为对象的付值问题
- 非Java问题,pdf怎么制作?
- 浏览器的悲剧
- Tomcat加载一个struts2的工程提示Source not found for HostConfig.checkResources
在保存到数据库的时候 转化为java.sql.Timestamp 丢掉了时间精度
如果是Date类型 需要 to_date(createdate,'yyyy-mm-dd hh24:mi:ss') , 你把插入时的数据打印一下看是不是插入的时候把时间丢失了。
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。
java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用 ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的 java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).
显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,
我们需要利用java.sql.Timestamp.
如果是录的时间直接写sysdate就行了subs.setCreatedate(new Date());
select sysdate from dual
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
System.out.println(f.format(now)); }
}2010-01-12 09:52:12
现在我已经把数据类型改为了Timestamp还是不行。然后又把程序的DATE改为了Timestamp,还是时分秒都为0.Timestamp是精确到秒后6位。