MySQL中存储的时间,主要分为datetime类型和int类型。一般来说规范的存法是存int型,特别是像过期时间、最近更新等需要排序、比较大小的时间,更应该存为int型。但最近的项目数据库通信涉及到Java、PHP、C#三种语言,PHP中的时间int型为10位整数,Java中的时间long型为13位整数,C#中不支持unix时间戳。这样往数据库存10位int型就很不方便,于是所有时间都存的datetime类型,取数据时再自行处理成需要的格式(当然跨时区是硬伤)。
下面说一下我的探索过程做个内容的整理,这里只针对PHP和Java,C#没有涉及。
PHP保存时间支持Unix的时间戳,MySQL使用int型保存时间,长度是10位整数,时间是从1970年1月1日零点到特定时间的秒数
Java中使用long类型保存时间,MySQL中不能再使用int类型,改为bigint,数据长度13位整数。保存的时间是从1970年到特定时间的毫秒数
可以通过乘以1000和除以1000完成数据的转换。
如果需要对时间字段进行操作(如通过时间范围查找或者排序等),推荐使用bigint,如果时间字段不需要进行任何操作,推荐使用timestamp,使用4个字节保存比较节省空间,但是只能记录到2038年记录的时间有限
标签:Java,int,问题,C#,时间,MySQL,PHP From: https://www.cnblogs.com/xupeixuan/p/16607887.html