国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淺談Mybatis+mysql 存儲Date類型的坑

瀏覽:4日期:2023-10-08 18:44:03

場景:

把一個時間字符串轉成Date,存進Mysql。時間天數會比實際時間少1天,也可能是小時少了13-14小時

Mysql的時區是CST(使用語句:show VARIABLES LIKE ’%time_zone%’; 查)

先放總結:

修改方法:

1. 修改數據庫時區

2. 在jdbc.url里加后綴 &serverTimezone=GMT%2B8

3. 代碼里設置時區,給SimpleDateFormat.setTimeZone(...)

例外:new Date() 可以直接存為正確時間,其他的不行。比如我試過,把new Date用sdf轉個2次,然后就錯誤了

貼一下測試的一下渣碼

// 1.new Date()直接存數據庫則是正確的日期 結果:√ 190626,數據庫存儲正常// Date now = new Date(); // 2,new Date()用simpleDateFormat轉化為字符串再轉為Date。結果: × 少1天 190625// Date now1 = new Date();// String tempStr = yyMMddFormatter.format(now1);// String tempStrDate = tempStr.split(' ')[0];// 會加上00:00:00// Date date = yyMMddFormatter.parse(tempStrDate); // 3.配置文件加上&serverTimezone=GMT%2B8,√ 正確 // 4. 設置中國標準時區 UTC+8 結果:√// SimpleDateFormat sdf = new SimpleDateFormat('yyMMdd'); // 設置時區: 中國標準時 China Standard Time UTC+08:00 使用GMT+8東8區,結果:?使用默認時區setTimeZone(TimeZone.getDefault);// sdf.setTimeZone(TimeZone.getTimeZone('UTC+8'));// System.out.println(sdf.getTimeZone().toString());// Date date = sdf.parse(liftMaxDt);// System.out.println(sdf.getTimeZone().toString());// System.out.println(date);//// Date targetDate = new Date(date.getTime());// System.out.println('------------------');// System.out.println(targetDate); // 5. 測試毫秒數 new Date(ms);但是要先使用sdf轉入參 結果:× 問題就在于SimpleDateFormat會混亂時區// SimpleDateFormat sdf = new SimpleDateFormat('yyMMdd');// Date date = sdf.parse(liftMaxDt);// Date targetDate = new Date(date.getTime());// System.out.println('使用sdf轉換date,在new Date(date.getTime())-----------');// System.out.println(targetDate); // 使用LocalDate.結果: × 還是少一天 DateTimeFormatter df = DateTimeFormatter.ofPattern('yyMMdd'); LocalDate ldt = LocalDate.parse(liftMaxDt, df); System.out.println('String類型的時間轉成LocalDateTime:'+ldt); // LocalDate轉LocalDateTime LocalDateTime lll = LocalDateTime.of(ldt, LocalTime.of(0,0,0)); ZoneId zone = ZoneId.systemDefault(); Instant instant = lll.atZone(zone).toInstant(); Date targetDate = Date.from(instant); // 將對象里時間屬性設置為String,數據庫里仍然用Date,用數據庫的時間函數轉化

最后,還是采用的數據庫為timestamp類型,用mysql的時間函數進行轉換,保證時間為數據庫時間

補充知識:mybatis解決java中的date類型存入oracle數據庫之后不顯示時分秒

實體類中類型為java.util.Date

private Date update_date;

數據庫中對應字段的類型為Date

不顯示 時分秒 的情況:

Mapping文件中對應字段的jdbcType為DATE類型

如果顯示時分秒的話,只需要將Mapping文件中對應字段的類型改為TIMESTAMP即可.

以上這篇淺談Mybatis+mysql 存儲Date類型的坑就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 亚洲国产成人久久精品影视 | 成人午夜视频一区二区国语 | 亚洲精品国产福利一区二区三区 | 怡红院日本一道日本久久 | 亚洲高清视频在线 | a毛片视频 | 九九免费在线视频 | 国产精品高清在线观看地址 | www.亚洲免费 | 欧美亚洲综合视频 | 欧美大片一区 | 在线私拍国产福利精品 | 国产三级在线视频播放线 | 免费国产成人高清在线观看不卡 | 日韩在线看片中文字幕不卡 | 亚洲欧洲国产成人精品 | 一区二区三区四区在线 | 国产精品无圣光一区二区 | 国产在线观看网址你懂得 | 亚洲香蕉一区二区三区在线观看 | 国内成人精品视频 | 欧美亚洲日本一区二区三区浪人 | 深夜福利视频在线观看免费播放 | 成人午夜看片在线观看 | 很黄的网站在线观看 | 日韩国产欧美一区二区三区在线 | 欧美激情毛片裸推荐 | 欧美日韩加勒比一区二区三区 | 91精品久久久久 | 国产高清免费观看 | 在线亚洲精品国产波多野结衣 | 欧美特黄一片aa大片免费看 | 亚洲成a人片毛片在线 | 天堂在线视频网站 | 香蕉网影院在线观看免费 | 精品国产一区二区三区不卡蜜臂 | 久久精品国产亚洲aa | 免费观看欧美精品成人毛片能看的 | 久草精品视频 | 久久国产精品免费 | 日韩美三级 |