mysql - 记录开始时间和结束时间,表字段类型用timestamp还是datetime?
问题描述
mysql数据库
时间都是近期的
问题解答
回答1:推荐题主看看这篇帖子,总结的不错 选择合适的 MySQL 日期时间类型来存储你的时间
回答2:先搜索下
这里回复很详细了
回答3:timestamp相比于datetime的优势:
所占空间小,timestamp占4字节,而datetime占8字节;
包含时区信息,如果日后修改了时区的话,timestamp所表示的时间会随时区而变化,而datetime不会。
timestamp的劣势:
只能表示从1970年到2038年的时间,而datetime不受此限制。
性能方面比较,不能一概而论,timestamp虽然是纯数字,计算要快一些,但人类不可读,还必须要经过函数转化,datetime是字符串类型,人类肉眼直接可读,虽然计算加减乘除时要经过一道转化。
对于小应用来讲,空间不必考虑,性能不必考虑,时区都是北京时间,直接使用datetime就好了,不必纠结。
结论:永远使用datetime来表示时间,决不使用timestamp,除非你有明确的理由,或者你知道自己在干什么。
回答4:两种类型都是存放时间的,至于内存占用和效率的区别在这里就不说了,一般应用中这点差异也对你系统没什么本质上的影响,所以我的观点是业务指向。datetime和timestamp比起来,timestamp类型的字段在数据库记录发生改变的时候(update)会自动更新这个字段的值,而datetime需要手动去设置才会改变。从业务角度进行筛选知道这点区别就行了,一般create time选datetime,update time选timestamp