mysql 数据库存时间最好是时间戳还是格式的时间
我理解的时间戳格式是这样的:1409556216984 如果存这个,用int类型还转不下呀,应该存什么类型,长度
如果是时间格式,前台还需要转换,是不是性能不佳
后端是:java
mysql 数据库存时间最好是时间戳还是格式的时间
我理解的时间戳格式是这样的:1409556216984 如果存这个,用int类型还转不下呀,应该存什么类型,长度
如果是时间格式,前台还需要转换,是不是性能不佳
后端是:java
这个问题是咱们程序员典型的架构权衡问题,甚至可以说钻牛角尖(当然有时候钻牛角尖不是不好)。
题主,其实无论你存时间戳还是用mysql的datetime,甚至是存字符串,这基本上都不会造成系统瓶颈,你应该把80%的时间用在解决系统性能消耗占比80%的问题上去。
我们阿里的系统,能够支撑单日亿级的写操作,读是多少大家更可以YY,而其中使用mysql的系统,时间就用的datetime,所以你完全不用担心性能的问题了。
用datetime还有个显而易见的好处,可读性高。1409556216984,这个时间戳没有人能看出来是什么时间,对未来问题排查和定位也会加大复杂度。
当然存成时间戳,除非你除了读取之外不将它作它用。
你只想到了把时间戳格式化成字符串花 CPU,就没想到你存成字符串花磁盘空间么?而且你不用取某个时间段之内的数据,或者比较两个数据的时间么?
我比较倾向与存的时候用 格式的时间, 然后取的时候后台可以在controller层使用jodaTime的getMillis()函数取到毫秒,然后前端用JS的Date()去封装,便可以根据客户端所在的时区显示相应的时间。(这么便利的就可以完成日期的国际化主要得益于:1.服务器存的是时间戳。2.客户端js)
3 回答2.7k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.8k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
4 回答1.9k 阅读
虽然我认为讨论技术问题时,宣扬“自己的系统实际表现有多牛(所以别人也一定要这么做)”不是什么好的论调……但我必须认同一点:这个问题的权衡还真就不是从性能上考虑的。时间戳和字面时间的互转只是简单的计算,所消耗的资源远远达不到引发问题的地步。
使用时间戳的唯一考虑是:你的应用是否涉及多时区,时间数据是否和时区相关。如果回答“是”,那么就必须使用时间戳,没有任何第二方案。
只有时间戳表示的时间是准确、恒定的,就连时间+日期+时区也不行——时区这玩意儿可不是恒定不变的……
其余的都不是什么重要的考虑,自己喜欢就行。
一般认为坚持使用时间戳总是好的,在程序设计中只会提供便利,不会引入坏处。至于查看数据时暴露时间戳原值,那是显示环节的不完备(或故意设计),而不是用时间戳用错了,切勿张冠李戴抹黑好东西。