概述
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。
java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT以来经过的毫秒数。 为了与 SQL DATE 的定义一致,由 java.sql.Date实例包装的毫秒值必须通过将时间、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
说白了,java.sql.Date就是与数据库Date相对应的一个类型,而java.util.Date是纯java的Date。
从类 java.util.Date继承的方法
after, before, clone, compareTo, equals, getDate, getDay, getMonth,getTime, getTimezoneOffset, getYear, hashCode, parse, setDate,setMonth, setYear, toGMTString, toLocaleString,UTC
sql.Date也有时间的
如果不想用oracle的to_date函数,可以自己生成sql.Date对象 String s = "2012-06-21 00:10:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss"); java.util.Date d1 = sdf.parse(s); //先把字符串转为util.Date对象 java.sql.Date d2 = new java.sql.Date(d1.getTime());//再转换为sql.Date对象 |
想要将带时分秒的时间插入到数据库中,除了Oracle数据库的to_date()方法之外。我们可以用Timestamp类来实现。java.sql.Date是规范化之后的时间,其时分秒部分被截取掉了。
java.sql.Date是为了配合SQLDATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
ResultSet
object as a “java.sql.Date” object in theJava programming language.
显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,
我们需要利用java.sql.Timestamp.
eg:
- "font-size:18px;">
String s="2012-01-02 03:12:21"; -
SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); -
java.util.Date du = sp.parse(s); -
java.sql.Timestamp st = new java.sql.Timestamp(du.getTime());
把一个日期值写入数据库中,发现由java.util.Date转存为java.sql.Date后,只有年月日,没有了时分秒:
- java.util.Date
ud = new java.util.Date(); - java.sql.Date
sd = new java.sql.Date(ud.getTime());
- pstmt.setTimestamp(15,
new java.sql.Timestamp(Calendar.getInstance().getTime().getTime())); //当前时间 - pstmt.setTimestamp(16,
new java.sql.Timestamp(userFile.getCreateTime().getTime())); //指定时间
对于指定时间还可以用Calendar类的setTime()方法来设置
- "font-size:18px;">Calendar
cal = Calendar.getInstance(); -
System.out.println(cal.getTime().getTime()); -
String string="2012-01-01 01:02:03"; -
SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); -
java.util.Date da = sp.parse(string); -
cal.setTime(da); -
System.out.println(cal.getTime().getTime());
在使用SimpleDateFormat时格式化时间的yyyy.MM.dd为年月日而如果希望格式化时间为12小时制的,则使用hh:mm:ss如果希望格式化时间为24小时制的,则使用HH:mm:ss,上代码:
- SimpleDateFormat
ss = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制
- SimpleDateFormat
sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制
- Date
d = new Date(); -
SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制 -
System.out.println(ss.format(d)); -
-
Date date = new Date(); -
SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制 -
String LgTime = sdformat.format(date); -
System.out.println(LgTime); -
-
- 结果为
- 2008-05-28
01:32:54 - 2008-05-28
13:32:54
最后
以上就是自觉鸡为你收集整理的java.sql.Date java.sql.Time java.sql.Timestamp的全部内容,希望文章能够帮你解决java.sql.Date java.sql.Time java.sql.Timestamp所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复