zoukankan      html  css  js  c++  java
  • 用Java操作数据库Datetime数据

    Date、Calendar、Timestamp的区别、相互转换与使用

    1 Java.util.Date

    包含年、月、日、时、分、秒信息。

    1 // String转换为Date  
    2 String dateStr="2013-8-13 23:23:23";  
    3 String pattern="yyyy-MM-dd HH:mm:ss";  
    4 DateFormate dateFormat=new SimpleDateFormat(pattern);  
    5 Date date=dateFormat.parse(dateStr);  
    6 date=dateFormat.format(date); 

    2 Java.sql.Date

    包含年、月、日信息,注意不包含时、分、秒信息

    继承自java.util.Date。用来读写数据库中的时间类型的字段,而无法使用Java.util.Date类型来操作数据库中的时间类型字段。

    1 // java.util.Date转换为java.sql.Date  
    2 new java.sql.Date(utilDate.getTime());// 其中utilDate为java.util.Date类型的对象 

    3 Java.util.Calendar

    包含年、月、日、时、分、秒、毫秒信息。

    JDK1.1引入,用以代替java.util.Date。

    1 // Date转为Calendar  
    2 Date date=new Date();  
    3 Calendar calendar=Calendar.getInstance();  
    4 calendar.setTime(date);  
    5   
    6 // Calendar转为Date  
    7 Calendar ca=Calendar.getInstance();    
    8 Date d =(Date) ca.getTime(); 

    4 Java.sql.Timestamp

    包含年、月、日、时、分、秒、纳秒(nano)信息。

    继承自java.util.Date。比java.sql.Date包含更多信息。在数据库相关操作中使用,如rs.getTimestamp,ps.setTimeStamp等。例如:若数据库中某字段hireDate为Oracle的Date类型,则使用getTimestamp时能够将年、月、日、时、分、秒信息取出;但使用getDate时则只能取出年、月、日信息。因此,一般推荐使用getTimestamp。

    1 // java.util.Calendar转换为java.sql.Timestamp  
    2 new Timestamp(Calendar.getInstance().getTimeInMillis());  
    3 // java.util.Date转换为java.sql.Timestamp  
    4 new Timestamp(date.getTime());  
    5 // String转换为java.sql.Timestamp,String格式:yyyy-mm-dd hh:mm:ss[.f...] ,方括号表示可选  
    6 Timestamp.valueOf("2013-07-06 01:49:30"); 

    数据库时间类型操作

    1 在数据库中插入时间

    PreparedStatement ps = con.prepareStatement("insert into TableName(dAddTime) values(?)");
    这里有三种方式:

    1) ps.setDate(1,new java.sql.Date(System.currentTimemillis()));
    2) ps.setTime(2,new java.sql.Time(System.currentTimemillis()));
    3) ps.setTimestamp(3,new java.sql.Timestamp(System.currentTimemillis()));

    第一种只插入年月日 0000-00-00
    第二种只插入时间 00:00:00
    第三种则插入完整的时间 0000-00-00 00:00:00.000 .000是毫秒数。

    2 取出数据库时间

    通常只有两种:

    1) getDate(String colname); // 取出日期 格式:0000-00-00
    2) getTimestamp(String colname); // 取出日期和时间 格式:0000-00-00 00:00:00.000

    例子:

    public class ScriptInsertNo32 {
        public static void main(String[] args) {
            Connection connection = null;
            PreparedStatement preparedStatement1 = null;
            PreparedStatement preparedStatement2 = null;
            Calendar calendar = Calendar.getInstance();
            Date nowDate = null;
            
            try {
                String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
                String url = "jdbc:sqlserver://localhost:1433;DatabaseName=water";
                String userString = "sa";
                String passwardString = "sicc2005";
                
                Class.forName(driverClass);
                connection = DriverManager.getConnection(url, userString, passwardString);
                
                String  sql1 = "INSERT INTO dbo.MonitorData VALUES "
                        + "('2c94a03d475d56f201475d71905e0006', '2c94a03d475d56f201475d5dc8570003', ?, ?, ?)";
                String  sql2 = "INSERT INTO dbo.MonitorData VALUES "
                        + "('2c94941448a657ff0148a718521c0007', '2c94941448a657ff0148a66db3df0003', ?, ?, ?)";
                preparedStatement1 = connection.prepareStatement(sql1);
                preparedStatement2 = connection.prepareStatement(sql2);
                nowDate = new Date();
                calendar.setTime(nowDate);
                Random random = new Random();
                DecimalFormat df = new DecimalFormat("0.00");
                
                for(int i = 0; i < 5; ++i) {
                    double val1 = ((double) (random.nextInt()%80)/10);
                    double val2 = ((double) (random.nextInt()%1800)/10);
                //    System.out.println("val:" + df.format(val));
                    val1 = Double.parseDouble(df.format(val1));
                    val2 = Double.parseDouble(df.format(val2));
                    val1 = Math.abs(val1);
                    val2 = Math.abs(val2);
                    calendar.add(Calendar.MINUTE, 5);
                    Timestamp timestamp = new Timestamp(calendar.getTimeInMillis());
                    preparedStatement1.setTimestamp(1, timestamp);
                    preparedStatement1.setTimestamp(2, timestamp);
                    preparedStatement2.setTimestamp(1, timestamp);
                    preparedStatement2.setTimestamp(2, timestamp);
                    preparedStatement1.setDouble(3, val1);
                    preparedStatement2.setDouble(3, val2);
                    preparedStatement1.execute();
                    preparedStatement2.execute();
                }
            
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
           if(connection != null)   
    try { connection.close();   }   } catch (Exception e) {   e.printStackTrace();   }
           if(preparedStatement1 != null)   
    try { preparedStatement1.close();   }   } catch (Exception e) {   e.printStackTrace();   }
           if(preparedStatement2 != null)   
    try { preparedStatement2.close();   }   } catch (Exception e) {   e.printStackTrace();   } } } }

    参考资料:

    http://blog.csdn.net/kingzone_2008/article/details/9256287

    http://wenku.baidu.com/link?url=HZ9q8WoIfHnMnSmenLKpDJpJCTFo0wYadcW6VR-ju3Lw7mq-PXUoDAfI-fqX5TkQd1MCcF9afN4STt-q3T67Q4ruEZtPnSxsWmHgd-Fg2lu

  • 相关阅读:
    OAuth2、CAS单点登录
    xshell隧道转发的三种类型
    chrome 不再支持iframe 携带cookie 访问第三方站点
    AopContext.currentProxy遇到的坑
    Feign Fallback FallbackFactory 笔记
    前端打包构建工具gulp快速入门
    童思编程前端架构设计
    新派系统Web前端架构
    Scratch3的结构
    Proxy使用详解
  • 原文地址:https://www.cnblogs.com/big-xuyue/p/4023095.html
Copyright © 2011-2022 走看看