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());