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

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

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

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

后端是:java

阅读 59.7k
8 个回答

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

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

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

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

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

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

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

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

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

datatime
对应java.sql.Timestamp

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

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

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

存成时间戳比较好,你在页面上可能需要不同格式化的时间,这时候就比较方便了。存的时候存timestamp类型。

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

新手上路,请多包涵

存时间戳,仿便转换,建议

推荐问题
宣传栏