java.util.Date date=new java.util.Date()
java.sql.Date data1=new java.sql.Date(date.getTime())
这样 java中的date就转成sql中的date了 ,具体你可以根据需要进行简化,
date1 就是当前时间,已经转成能插入数据库中的datetime类型了。
JDBC环境下
如果使用的是PreparedStatement接口:
1.String sql = "insert into 表名(date类型的列) values(?)"
2.PreparedStatement stmt = con.prepareStatement(sql)
3.stmt.setDate(1, date对象)
4.stmt.executeUpdate()
如果使用的是Statement接口:
1.java.text.SimpleDateFormat fmt1 = new java.text.SimpleDateFormat("yyyy-MM-dd") // mssql、mysql格式
2.java.text.SimpleDateFormat fmt2 = new java.text.SimpleDateFormat("dd-MM月-yyyy") // oracle格式
3.String sql = String.format("insert into 表名(date类型的列) values('%s')", fmt1.format(date对象))
4.Statement stmt = con.createStatement()
5.stmt.executeUpdate(sql)
1:System.currentTimeMillis() 返回long类型 可以强制转换成Date格式 .
2:SimpleDateFormat.format()返回的是 String类型,可以得到我上述的时间格式,但是是String类型。
3:SimpleDateFormat.parse()返回的是Date类型,该方法试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串,试过后发现,解析后的值是“格林威治时间格式“,即我当初设想的思路应该不能实现,转而改变策略,以任意格式把时间变成Date格式插入数据库中,提取的时候再做变换即可。
4:查询中发现java.util.Date 和 java.sql.Date存在一些区别,util.date用Date date = new Date(),util可以活动值,sql包必须给参数。
在刚接触数据库 *** 作时就发现时间在Java和数据库自己传输时经常出错,后来自己不断的调试得出一种解决方法:在建立javaBean时将变量如time直接定义为Date类型,而数据库表单里的数据类型定义为datetime。当向数据库增加一条数据时,
stm.setString(4, new Date().toLocaleString())
当然有人会觉得,我定义的是Date类型的,为什么要用setString,因为后面我是使用了当前时间的一个字符串,所以要用String类型,
而且写sql语句时写数据表里数据名就可以,string直接存进去完全没有问题,只是我调出来的比较好玩的发现,前面我用date的几种
属性也不成功,应该是我水平有限,如果大家有好的方法请多多指教。
而读取一条数据时rs.getDate()
第二种方法就比较正经:
在建立javaBean是将变量如time直接定义为 Timestamp 类型,这是sql里的一种类型,同样的数据表里数据类型还是定义为datetime,
当向数据库增加一条数据时,stm.setTimestamp(6,new Timestamp(new Date().getTime()))
很正常的一种写法,而读取数据时rs.getTimestamp()
这是我常用的两种方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)