然之时间数据存储格式疑问
2017-08-17 16:21:46
杨桢
  • 访问次数: 59
  • 注册日期: 2017-06-29
  • 最后登录: 2017-11-09
  • 我的积分: 2580
  • 门派等级: 释迦 等级3 比丘

通过查看开源版和专业版的数据库和代码,然之系统的时间数据存储格式都是date或datetime,但我个人认为,将所有时间存储为UTC时间戳的形式更有优势。

1、系统时间数据存储为UTC标准时间的时间戳(varchar(10)),可以保证数据中时间节点的无异议性。前端调取页面的时候,只要根据系统设置的时区常量做本地时区的转化即可。这样,一旦服务器的默认时区变更了,数据中的时间节点也是唯一确定的,不存在受原有旧时区影响而导致的时间不准。

2、在筛选日期范围等需要计算时间字段的时候,虽然mysql的查询语句支持直接运算时间格式的数据,但效率肯定不如直接将时间戳作为整型数字运算的快。而且时间戳的位数是固定的,就是10位,不会出现控制不好存储格式而造成的出现月份或日期有的两位、有的一位这种位数不等的数据。(个人在二次开发的过程中就掉进过这个坑。)

3、由于UTC时间戳的存储思路可以保证数据准确性不受服务器时区的影响,修改后然之系统可以做到跨时区使用,只要在后台设置相应的时区参数,即可做到不仅支持多语言(语言包中我看到有英文),还能做到支持多时区切换。

4、在php与js混合使用字段值时,有时候这种date格式的数据js是无法直接运算的,需要进行格式转换。而js最原始也是最通用的格式是13位的毫秒级时间戳(PHP使用10位秒级时间戳),使用时间戳做原始数据也容易实现js和php的兼容调用。

5、与其他系统对接或者PHP系统与其他语言开发的插件桥接的时候,最通用的就是时间戳形式的时间数据,其他数据可能会受语言的限制和不得不进行分别转换。


以上只是个人建议,然之框架如果整体修改时间存储格式工程太大,希望在进行大版本升级的时候可以考虑。至少这种存储格式在中大型电商系统中具有优势的。

个人看法如果有错误的地方欢迎各位批评指正。

沙发
2017-08-17 17:49:46
石洋洋
  • 访问次数: 1013
  • 注册日期: 2015-12-11
  • 最后登录: 2023-08-09
  • 我的积分: 2810
  • 门派等级: 无门派
谢谢反馈。
板凳
2017-08-18 08:46:26
王春生
  • 访问次数: 938
  • 注册日期: 2014-05-02
  • 最后登录: 2023-09-12
  • 我的积分: 1310
  • 门派等级: 无门派

mysql存储日期格式,底层也是用数字的。时间戳和datetime没有本质上的区别。用datetime,数据的可读性会更好。不考虑更换。

1/1