这个要看你的具体需求。一般来说无非是原始输入是否为Date类型,和数据库中保存的是否为Date类型。比较麻烦的地方是原始输入的日期类型一般是java.util.Date类型,而数据表中要求的一般是java.sql.Date类型。所以个人建议在数据表中将日期字段设计成varchar类型,然后如果原始数据也是String类型就可以直接保存。如果是Date类型,可以通过使用java.text.SimpleDateFormat对象来把日期转换成需要的字符串格式,再进行保存。因为,考虑到绝大多数情况下,对于数据库中日期的输出依然最后要以字符串的形式返回。所以这是一种比较合适的方法。
另外还有一种情况就是在数据表中必须要保存Date类型,并且是做为日志使用。通常也可以在当初设计数据表的时候,通过对日期字段设置default值来让数据库自动插入当前时间。也是不错的办法。
这个简单String time=new SimpleDateFormat("yyyy-MM-dd-HH:mm").format(Calendar.getInstance().getTime())//获取系统时间
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包必须给参数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)