MySQL中timestamp、datetime对应的Java类型封装
-
先说结论
- 使用Timestamp类(java.sql.Timestamp)来封装
-
原因
-
存储长度
-
MySQL的timestamp、datetime
日期类型 日期格式 日期范围 datetime YYYY-MM-DD HH:MM:SS.[fff...] 1000-01-01 00:00:00~9999-12-31 23:59:59 timestamp YYYY-MM-DD HH:MM:SS.[fff...] 1970-01-01 00:00:00~9999-12-31 23:59:59
-
java中Date、Timestamp
日期类型 日期格式 日期范围 Timestamp YYYY-MM-DD HH:MM:SS.[fff...] 1970-01-01 00:00:00~9999-12-31 23:59:59 Date YYYY-MM-DD 1970-01-01~9999-12-31
-
Date类官方文档:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html
To conform with the definition of SQL
DATE
, the millisecond values wrapped by ajava.sql.Date
instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.[为了符合 SQL 的定义,实例DATE
包装的毫秒值java.sql.Date
必须通过在实例关联的特定时区中将小时、分钟、秒和毫秒设置为零来“规范化”]故,即使原时间戳时分秒有值,通过 Date类型封装进行显示,都会变为0
-
-
-
-
所以,即使Java的Timestamp还是存在无法覆盖MySQL的datetime类型的地方,但已经是最优解了
-
Java获取当前时间戳保存至数据库操作时,可用以下代码获取并封装传参
Timestamp timestamp = new Timestamp(System.currentTimeMillis());