日期和时间是每个系统,每个数据库设计必不可少的部分。也是容易被大家忽视的部分。很多开发者可能根本不了解以不同类型存储日期和时间意味着什么。
有朋友可能会说,数据库定义一个datetime或timestamp类型的字段,然后在Java代码中获取当前时间并存入数据库不就可以了吗?
Date now =
最近设计新系统的数据库,涉及到跨时区的问题,于是专门调研了不同日期时间类型的利弊,也咨询了不少同行使用的情况。这里分享给大家。
常见的日期时间使用情况有如下几种:字符串、Datetime、Timestamp、Unix timestamp。如果将日期和时间具体拆分细化又可包含DATE、TIME、YEAR,这部分我们这里暂且不过多讨论。
字符串存储日期
把日期和时间当做一个字符串进行存储,进而将日期和时间拆分成两个字段,一个字段记录日期(如yyyy-MM-dd),另外一个字段存储时间(如:HH:mm:ss)的形式。
此种方式就不多说,除非极个别的场景,不建议使用。当使用此种方式进行处理日期,不仅性能有问题,比较、处理、取范围等都是麻烦事。
之所以提出这种方式,也是提醒大家,如果你的数据库日期字段还在用字符串存储,需要慎重考虑一下了。
DateTime类型
DateTime类型