1. 使用字符串存储日期,第一个显而易见的问题就是无法使用 MySQL 中提供的日期函数,这会为很多查询带来不便 2. 使用字符串存储日期的第二个问题就是占用空间较大, 例如存储一个标准"yyyy-MM-dd HH:mm:ss"格式的时间:
1. timestamp存储范围则介于 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 之间 2. timestamp自带时区属性, TIMESTAMP 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间 3. 数据库中存储的形式为: yyyy-MM-dd HH:mm:ss 4. 对应Java类型: java.sql.Timestamp
故, 如果你的业务需要对应不同的国家时区,那么类型 TIMESTAMP 是一种不错的选择, 但它最大的弊病是他的存储范围只到2038年..
1. 数据库中存储的形式为:yyyy-MM-dd HH:mm:ss, 这个和timestamp存储形式一样 2. datetime存储范围介于 1000-01-01 00:00:00 到 9999-12-31 23:59:59 之间, 相比timestamp, 其可存储范围更大 3. datetime不具备时区属性, 时区问题也并非一定要在数据库中解决,也可以在前端或者服务端用代码处理下 4. 对应Java类型: java.util.Date 或者 jdk8的LocalDateTime
一般存储日期时间格式的字段, 建议使用datetime
1. 数据库中存储的形式为:yyyy-MM-dd 2. date存储范围介于 1000-01-01 到 9999-12-31 之间 3. 对应Java类型: java.util.Date(可通过@JsonFormat指定特定格式), 或者 jdk8的LocalDate
一般存储日期格式的字段(如: 生日), 建议使用date
1. 其优点是: 当我们需要进行日期排序以及按照日期范围查询的时候,就变成了普通的数字比较了,那么效率肯定是杠杠滴 2. 但是缺点也显而易见: 可读性太差