数据库设计中,日期字段的类型应该如何选择?

几乎大多数软件系统都需要依赖于数据库来存储数据,这些数据库大多是支持标准SQL也就是ANSISQL的,我们可以定义各种类型的字段,其中我们常常需要用一个字段来表示日期。但是在不同的数据库我们可以用不同的字段类型来存储日期,比如我们可以用整型数字字段来存储日期时间,也可以用字符串类型的字段来存储日期时间,当然也可以用各种数据库提供日期类型的字段来存储日期时间,但是我们在实际应用中选择哪种更合适呢?根据我个人的经验和想法,得出以下一些看法,用于对各种日期字段设置方法进行优缺点说明(本人一般是使用Java编写程序):
1.直接使用日期型字段。
使用日期类型字段存储时间,这样程序编写很方便,可以直接查询或者存储日期对象,提高了程序的优雅性。缺点是如果是这样设计的数据库,万一要进行异种数据库的数据迁移就可能会带来不便。因为不同种类的数据库的日期存储格式可能不一样,另外就是不太方便利用SQL对日期相关的数据实现一些特别的查询及其它操作,比如按月分组、按季节分组,就算实现了也往往和一种类型的数据库联系太紧密或者别扭。
2.使用整型字段来存储数据。
使用整型字段来存储日期又可以分类:
第一种方法是直接存储自1970年1月1日到现在经过的毫秒数,一般都编程语言都对这个数提供了方法支持,比如java的System.currentTimeMillis()。这种方法使用起来也还算方便,在数据库数据的迁移等方面也还顺利,在进行数据库日期范围查询时也比较方便和精确。比如要查询指定日期前12小时的数据,就可以轻松将程序处理好的时间作为时间条件。缺点是不方便对时间进行分组查询,比如按月统计、按季统计等。
第二种方法也是存储整数数据,但是是严格按住诸如"20050926"的格式存储的,规定哪几位存放年,月或日。这样的方式既便于数据库的升级和数据的迁移,也便于数据的多种查询。通过数据库提供的简单标准的数学函数,我们可以非常灵活地实现复杂查询。比如按日期字段除以100的结果值进行分组,就实现了按月分组。这个方法缺点也较明显,日期数据的存储前和读取后都要进行一个转换,降低了效率和优雅性。
3.使用字符串类型字段存储日期数据。
我们可以规定日期的字符串格式来进行存储,比如存储字符串,比如"20050926"。这样做程序编写也还方便,因为字符串的操作总是最普通常见的。数据库的查询比较灵活,比如可以灵活地使用"like"操作,在不同数据库间的迁移也同样方便,缺点是不便于实现数据的分组统计。
根据以上的描述,我们可以看出不同的日期字段设计方法会带来不同的优缺点,我们可以在软件项目中根据项目的特点来灵活选用。
以上内容摘自波波的博文(稍有改动)http://blog.tianya.cn/blogger/post_read.asp?BlogID=9171&PostID=2790460
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值