使用 MySQL Date/Time 类型

 更新时间:2008年03月26日 21:27:31   作者:  
上次对于 MySQL 方面已经有的一些总结,但是昨晚 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原来是 Zend Studio 的时区配置问题(我狂汗ing)。而在和他讨论期间也谈到了很多关于 MySQL 的细节问题,还是记录一下当作备忘比较好。这篇文章同时也做说服 wiLdGoose 兄用。
 由于曾经和他是同一个团队的,所以对于其我很熟悉他那“洁癖”的做法,对于他的很多的观点我也非常的赞同;但是有一件非常不理解的地方就是设计数据库的时候总是会回避使用 Date/Time 类型。他的做法是将时间相关的字段设置为 INT(10) 类型,然后用 UNIX 时间戳来存储。而我本人对于这点做法非常的不赞同:

首先,是类型操作的不同,类似于 wiLdGoose 这样做法的“时间计算”实质上是整形之间的操作(而且这个整形非常大,长度为 10)。更有甚者,将时间戳设置为 VARCHAR(10) ,由此引发的效率问题不言而喻。

至于时间计算和整形计算乃至字符串的计算的效率问题,这篇文章非常能说明问题。

其次,是逻辑方面的操作问题。这是使用时间类型的优势,尤其是在需要高精度的项目上。比如需要“前一个星期的数据”和“获得从数据库建立以来每个星期一的数据”,这样的操作如用 wiLdGoose 兄的做法复杂度可想而知。

最后,就是直观不直观的问题,可以理解的是我们的大脑是不会直接将这一大串的时间戳转换成日期格式的。相比而言,直接使用时间类型明显就直观得多(它本身就是时间格式)。

而我目前的团队也还是在使用类似的方法。本人对于类似技术细节也争执了良久,但由于岗位和决定权的问题,团队还是无法采纳本人的意见,甚为遗憾。

MySQL 定位为简单快速的 DBM 自然能迅速的驾驭,但是另一方面很容易造成不会深入下去的局面。对于此,我们更应该注意每一项的数据库设计细节,一项产品不断添加新的功能到最后都是面向应用的。

最后,附 MySQL 官方的时间和日期函数的手册

相关文章

  • PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解

    PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解

    这篇文章主要介绍了PHP基于闭包思想实现的BT(torrent)文件解析工具,结合具体实例形式分析了php针对torrent文件的读取与解析相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • php基于登陆时间判断实现一天多次登录只积分一次功能示例

    php基于登陆时间判断实现一天多次登录只积分一次功能示例

    这篇文章主要介绍了php基于登陆时间判断实现一天多次登录只积分一次功能,适合会员系统的积分功能,涉及php时间判断与数据库相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • PHP获取数组中某元素的位置及array_keys函数应用

    PHP获取数组中某元素的位置及array_keys函数应用

    获取数组中一元素的位置有很多方法,其中PHP自身就已经内置了一个函数array_keys(),下边的代码能够打印出所有PHP的内置函数,感兴趣的朋友可以了解下同时学习一下函数array_keys()的使用方法,就当巩固知识量啦
    2013-01-01
  • 详解PHP设计模式之依赖注入模式

    详解PHP设计模式之依赖注入模式

    依赖注入模式:依赖注入是控制反转的一种实现方式。要实现控制反转,通常的解决方案是将创建被调用者实例的工作交由 IoC 容器来完成,然后在调用者中注入被调用者(通过构造器 / 方法注入实现),这样我们就实现了调用者与被调用者的解耦,该过程被称为依赖注入。
    2021-05-05
  • PHP二维数组分页2种实现方法解析

    PHP二维数组分页2种实现方法解析

    这篇文章主要介绍了PHP二维数组分页2种实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • PHP中调试函数debug_backtrace的使用示例代码

    PHP中调试函数debug_backtrace的使用示例代码

    debug_backtrace() 是一个很低调的函数,很少有人注意过它,这篇文章主要给大家介绍了关于PHP中调试函数debug_backtrace的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,感兴趣的朋友们随着小编来一起学习学习吧。
    2017-09-09
  • PHP判断是否为空的几个函数对比

    PHP判断是否为空的几个函数对比

    这篇文章主要介绍了PHP判断是否为空的几个函数对比,本文讲解了gettype()、empty()、is_null()、isset()等几个函数在不同变量下的返回值情况,需要的朋友可以参考下
    2015-04-04
  • MySQL 日期时间函数常用总结

    MySQL 日期时间函数常用总结

    MySQL 日期时间函数常用总结,需要的朋友可以参考下
    2012-06-06
  • PHP新手用的Insert和Update语句构造类

    PHP新手用的Insert和Update语句构造类

    PHP新手用的Insert和Update语句构造类,没多大功能,学习php的朋友可以参考下
    2012-03-03
  • php在文件指定行中写入代码的方法

    php在文件指定行中写入代码的方法

    有的站主页是缓存页面,你加入的网马代码或是webshell代码经常被更新或是其它的因素干掉,所以弄了这个代码,防范方法脚本之家将最后给解决方法
    2012-05-05

最新评论