MySQL中timestamp、datetime對應的Java類型封裝


MySQL中timestamp、datetime對應的Java類型封裝

  1. 先說結論

    • 使用Timestamp類(java.sql.Timestamp)來封裝
  2. 原因

    1. 存儲長度

      • 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 a java.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

  3. 所以,即使Java的Timestamp還是存在無法覆蓋MySQL的datetime類型的地方,但已經是最優解了

  4. Java獲取當前時間戳保存至數據庫操作時,可用以下代碼獲取並封裝傳參

    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM