分享

mysql 数据库存时间最好是时间戳还是格式的时间

 quasiceo 2016-06-14

mysql 数据库存时间最好是时间戳还是格式的时间

kaipizhe 2014年09月01日提问
  • 4 关注

  • 0

    mysql 数据库存时间最好是时间戳还是格式的时间

    我理解的时间戳格式是这样的:1409556216984 如果存这个,用int类型还转不下呀,应该存什么类型,长度

    如果是时间格式,前台还需要转换,是不是性能不佳

    后端是:java

    7 个回答

    9

    虽然我认为讨论技术问题时,宣扬“自己的系统实际表现有多牛(所以别人也一定要这么做)”不是什么好的论调……但我必须认同一点:这个问题的权衡还真就不是从性能上考虑的。时间戳和字面时间的互转只是简单的计算,所消耗的资源远远达不到引发问题的地步。

    使用时间戳的唯一考虑是:你的应用是否涉及多时区,时间数据是否和时区相关。如果回答“是”,那么就必须使用时间戳,没有任何第二方案。

    只有时间戳表示的时间是准确、恒定的,就连时间+日期+时区也不行——时区这玩意儿可不是恒定不变的……

    其余的都不是什么重要的考虑,自己喜欢就行。

    一般认为坚持使用时间戳总是好的,在程序设计中只会提供便利,不会引入坏处。至于查看数据时暴露时间戳原值,那是显示环节的不完备(或故意设计),而不是用时间戳用错了,切勿张冠李戴抹黑好东西。

    • 日期的字符串-时间互转、计算、比较及时区转换,请使用后台语言中提供的相关类,不自己造轮子就可以。
    • 可以略微注意2038年问题的陷阱。对于MySQL而言,如果存时间戳请使用timestamp或bigint,而不要使用int。
    2

    这个问题是咱们程序员典型的架构权衡问题,甚至可以说钻牛角尖(当然有时候钻牛角尖不是不好)。
    题主,其实无论你存时间戳还是用mysql的datetime,甚至是存字符串,这基本上都不会造成系统瓶颈,你应该把80%的时间用在解决系统性能消耗占比80%的问题上去。

    我们阿里的系统,能够支撑单日亿级的写操作,读是多少大家更可以YY,而其中使用mysql的系统,时间就用的datetime,所以你完全不用担心性能的问题了。

    用datetime还有个显而易见的好处,可读性高。1409556216984,这个时间戳没有人能看出来是什么时间,对未来问题排查和定位也会加大复杂度。

    1
    1

    当然存成时间戳,除非你除了读取之外不将它作它用。

    你只想到了把时间戳格式化成字符串花 CPU,就没想到你存成字符串花磁盘空间么?而且你不用取某个时间段之内的数据,或者比较两个数据的时间么?

    0

    我比较倾向与存的时候用 格式的时间, 然后取的时候后台可以在controller层使用jodaTime的getMillis()函数取到毫秒,然后前端用JS的Date()去封装,便可以 根据客户端所在的时区显示相应的时间。(这么便利的就可以完成日期的国际化主要得益于:1.服务器存的是时间戳。2.客户端js)

    0
    0

    时间戳,绝对利大于弊~只有好处,没有坏处。

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多