大家数据库的时间存什么类型
这几天在看fastadmin框架,发现框架推荐用bigint,但是我习惯用datetime看起来直观。
大家的数据库的时间使用什么类型 bigint 还是 datetime
关于 LearnKu
datetime
我跟着
laravel学,用的timestamp想用整型,但还是用的datetime,直观加调试方便
时间戳 秒
created_at, updated_at 这些每个表都有的字段用 timestamp
其他有业务需求的字段用 datetime
datetime
laravel使用的是
timestamp,但是最大值就到2038年1月19日 03:14:07 UTC,其实对应的就是有符号的32位int类型最大值2,147,483,647 。如果设置int类型为无符号,那么最大值可表示最大时间为
2106年2月7日 06:28:15 UTC。如果设置为bigint,那么bigint对应的其实就是64位的int,那可用表示的时间就很长很长了。如果设置的是datetime类型,它的范围是从
1000-01-01 00:00:00 到 9999-12-31 23:59:59。常用的可能就是
timestamp和32位/64位int类型(int和bigint),查询效率上两者差别不大,甚至在代码层面,有的时候timestamp不需要转换,可用直接使用显示。而且laravel中有强大的时间处理包Carbon,可用进行加减,自定义时间等等操作。不过我还是习惯int类型。timestamp 会带时区,datetime不带,原样输出
datetime 一目了然
TIMESTAMP和DATETIME的相同点:
1> 两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。
TIMESTAMP和DATETIME的不同点:
1> 两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
而对于DATETIME,不做任何改变,基本上是原样输入和输出。
涉及跨时区业务或较多时间转换运算,用时间戳;其他用timestamp就好了,2038年太遥远了,99%的项目熬不到那个时候。
timestamp
datetime
我是跟着框架走 保持一致。 一个项目不要一时 datetime 一时 int 就行
先想想项目能不能活到2038,或者需要用到2038年,再想想这点微弱的性能是否能引起你的注意,至于细节,楼上的说的很清楚了~
这种需要考虑具体的场景,比如说记录当前的时间,这种适合 timestamp,比如记录生日,过期时间等等,就得考虑超过超过2038年,或者1970年了
个人习惯INT。只要一个项目统一就行其实
习惯 timestamp 了
跟着框架来,并没有一定要用哪个,因为要改动框架本身的格式会比较麻烦,所以框架用什么就跟着用什么就行了,放过自己,和自己和解一下子。
额我是直接存int的时间戳
datetime,用int很奇怪,时间不应该是用时间类型吗?设计数据库的人都出了日期字段,肯定就是让你用它的,而不是背道而驰把int当日期用。int是数字,而且大部分代码场景还是要将时间戳转换一下才能继续用,这样也多浪费了性能。
int就够了,bigint没必要,咱也活不了这么长时间
视情况决定,大部分是
timestamp,不过有一次我在同步一家医院病人数据的时候,他们的病人出生日期低于1970-01-01,然后因为字段类型是timestamp直接报错datetime 就行
int 好查询,直接 = 就查询了
datetime,查生产问题,和定位问题方便