概述
在设计库表时,经常会碰到用于保存"时间值"的字段,如create_date,begin_time,login_time等,举不胜举。针对这些类型的字段,在设置数据类型时,有一个有趣的现象,即其中一些人使用Date类型,而另外一些人使用Char(8)/Char(14)类型。一般而言,初学者,在校学生,甚至老师一般都属于前者,他们一个鲜明的特征是对数据库的理论掌握很好,但普遍缺少实际项目的开发经验;而后者一般是那些有一定项目经验的开发人员。乍一看,这些时间值字段,用Date类型应该是合情合理,天经地义的,为什么有一定项目经验的人偏偏要这样"弃暗投明",这样"特立独行"呢?www.xker.com(小新技术网)
这是典型的白猫黑猫问题,理论化的东西很光鲜,但有时在实践中就是不灵光,而一些"旁门左道"的东西却显得更加方便易用。本文将通过一个具体例子的不同开发过程,分析Char类型时间字段为什么在实践中更受欢迎。考虑到篇幅所限,我们仅对Date类型和Char(8)类型的时间值字段作比较分析,对于Date类型和Char(14)类型的分析,相信大家完全可以由此而及彼。
1、比较的例子
我们设计了一个具体的实例,对用Char类型和Date类型的日期进行比较分析,使用的是Oracle数据库,现对该实例进行简单的描述。
假设有一个T_USER表,有一个EXPIRE_DATE(过期日期)字段,要求记录年、月、日的日期数据,对EXPIRE_DATE字段分别采用两种实现方式:
![]() 图 1 T_USER表 |
![]() 图 2 两方案分别对应的User.java PO |
![]() 图 3 UserActionForm.java |
| 1. User user = new User(); 2. //将userActionForm中的数据拷贝到user对象中 3. BeanUtils.copyProperties(user, userActionForm); 4. //将日期格式符去除,得到数据库存储日期格式,如将2006-06-06转换为20060606 5. user.setExpireDate(user.getExpireDate().replace("-","")); 6. … 7. //调用服务对象,将user保存到T_USER中 8. userService.save(user); |
最新相关文章
发表评论