JDBC日期类型学习

java时间日期类型学习
java.sql.Date, Time, Timestamp对应sql中的date, time, timestamp.
但是很多数据库中用date不只表示年月日,还表示时分秒,但jdbc通过getDate从结果集中
获取date时会把时分秒的信息截取掉,以对应sql中date的标准,所以从数据库中的date字段获取信息且信息包含时分秒时,要通过timestamp来获取,这样不至于丢失信息,同样对于Time也可能是同样的道理吧!。java.sql.Date只保存年月日,时分秒都会设置成默认的,不管之前是什么。因为Date是根据sql规范而来的类,所以比较理想一点


抽象:
当一个对象超过本身应该拥有的信息, 对于其客户端而言,就应该把她当作比对象本身的类型更泛型的类型

后面学习

java.util.Date 表示特定的瞬间,精确到毫秒,使用DateFormat类格式化和分析日期字符串,解释年月等字段的功能已废弃,使用Calendar来实现日期和时间字段之间的转换。
构造函数 Date(), 初始化的时间
Date(long)


java.util.Calendar(日历) 为特定瞬间与时间字段之间的转换提供方法,还可以修改时间字段,通过工厂方法getInstance()来获取默认Local的日历。通过 get(int)来获取时间字段,通过setTime()和getTime()向java.util.Date相互转化。

java.util.Local final类。与区域敏感的操作包装类

java.sql.Date java.util.Date的年月日的装饰者,与sql中的date相对应,当通过setDate(),getDate()与数据库交互是jdbc会根据sql的规范把date的时分秒清零。

java.sql.Time 是时分秒的装饰者,

java.sql.Timestamp是年月日时分秒的装饰者(秒后面还有个0)。 使用setTimestamp()设置查询参数时,会混淆优化器使对应的字段无法做索引。

java.text.DateFormat 格式化Date和解析Date字符串的抽象类。

java.text.SimpleFormat Date格式化的基本实现, 有2种方式构造格式划器
1: 直接通过构造函数 SimpleFormat(pattern)
2:通过工厂方法获取默认格式化类,在通过applyPattern(pattern)来设置格式化格式(文档中看的)。但是通过工厂类获取的实例是抽象类类型,要使用applyPattern()还要向下转型。

职责分析与设计
java.util.Date只表示瞬间,而这一瞬间的字段表示和区域有关系,不易于国际化。所以把这个瞬间的字段获取和国际化的变化从瞬间中隔离出来,也就是Calendar存在的理由,而Calendar中有聚合一个Local表示与本地有关的信息。这样怎么了,不知道。纯属乱写。:-(

由于格式化的格式变化无穷,因此把这个变化单独提取出来,应付格式的变化,再想。如果A在方面B上有结果A.f(B),而B又可以参数化,因此可以把B当作一个主题提取出来,参数,f为其手下,从而可以应付手下的简单替换B.f(A, param)

java.sql.时间类型,都是特定类型的Date,比Date的使用范围窄了,所有感觉设计的不是很好,应该使用对象的适配而不是类的适配,新手很容易混淆,尤其想我这样的。及时继承也应该是私有,不应该对sql.时间类型的签名为util.Date.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值