zoukankan      html  css  js  c++  java
  • java.util.Date日期类通过java语句转换成Sql(这里测试用的是oracle)语句可直接插入(如:insert into)的日期类型

        public void add(Emp emp) throws Exception{
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "insert into emps (id,username,salary,hiredate) values(?,?,?,?) ";
            java.util.Date ud = emp.getHiredate();
            //initialize the ud such as ud = new java.util.Date(); 
            java.sql.Date sd = new java.sql.Date(ud.getTime());
            //java.sql.Timestamp dateSQL = new java.sql.Timestamp(ud.getTime());
            Object[] params = {emp.getId(),emp.getUsername(),emp.getSalary(),sd};
            runner.update(sql,params);
        }
    java.util.Date与java.sql.Date,java.sql.TimeStmp之间的转化,可以参考()       
    注意:java.sql.Date类型的值插入到数据库中Date字段中会发生数据的截取。
    为什么会截取呢?
            java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
      
      在sun提供的ResultSet.java中这样对getDate进行注释的:
           Retrieves the of the designated column in the current row of this <code>ResultSet</code> object as a “java.sql.Date” object in the Java programming language.

             同理。如果我们把一个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.
  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/damoblog/p/10099320.html
Copyright © 2011-2022 走看看