解決MySQL存儲(chǔ)時(shí)間出現(xiàn)不一致的問題
用Java在獲取了系統(tǒng)時(shí)間后,存入MySQL數(shù)據(jù)庫時(shí),當(dāng)時(shí)間的類型為datetime或Timestamp時(shí)發(fā)現(xiàn)數(shù)據(jù)庫的存儲(chǔ)與本地時(shí)間不一致。
很大原因是,MySQL設(shè)置的時(shí)區(qū)與你本地時(shí)區(qū)不一致造成的,解決辦法可以修改MySQL的時(shí)區(qū)配置,這個(gè)大家網(wǎng)上搜一下就有了。
本人推薦第二種方法就是在數(shù)據(jù)庫連接的那個(gè)DBUtil類里根據(jù)你項(xiàng)目的實(shí)際需要進(jìn)行設(shè)置,不如我在如下代碼里更改了時(shí)區(qū)與亞洲上海同時(shí)區(qū)
private static String driver = 'com.mysql.cj.jdbc.Driver'; private static String url = 'jdbc:mysql://127.0.0.1:3306/mypetstore?serverTimezone=Asia/Shanghai&useSSL=false';
serverTimezone=Asia/Shanghai就是用來設(shè)置時(shí)區(qū)的。
在從MySQL里取出Timestamp數(shù)據(jù)時(shí),顯示到瀏覽器的時(shí)候,總會(huì)在末尾出現(xiàn)一個(gè).0,很討厭,怎么辦呢?
可以使用如下EL表達(dá)式和JSTL標(biāo)簽的將其格式化,其中l(wèi)og.date就是所查出的時(shí)間數(shù)據(jù)
<fmt:formatDate value='${log.date}' type='date' pattern='yyyy-MM-dd HH:mm:ss' />
注意:若寫成yyyy-MM-dd hh:mm:ss這樣將區(qū)分不了上午與下午
補(bǔ)充:Mysql存儲(chǔ)時(shí)間或日期錯(cuò)位問題
這里說一下mysql數(shù)據(jù)庫添加記錄的時(shí)候,出現(xiàn)日期錯(cuò)位一天或者時(shí)間不對的問題。
遇到問題的場景代碼邏輯沒問題,單步執(zhí)行發(fā)現(xiàn)存的時(shí)候日期也沒錯(cuò),但是存到數(shù)據(jù)庫日期就不對了。
原因原因就是你配置數(shù)據(jù)源連接加的參數(shù)內(nèi)容的問題,如果沒猜錯(cuò)你配置的serverTimezone這個(gè)參數(shù)應(yīng)該是UTC,這個(gè)是使用的時(shí)區(qū)不對導(dǎo)致存數(shù)據(jù)的時(shí)候日期錯(cuò)位。
把serverTimezone設(shè)置成Asia/Shanghai,如下圖,這樣再試一下,問題就解決了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. 關(guān)于Oracle中sqlldr的用法大全2. 探討SQL Server 2005.NET CLR編程3. SQL Server中, DateTime (日期)型操作4. 一個(gè)SQL Server Sa密碼破解的存儲(chǔ)過程5. 使用SQL語句快速獲取SQL Server數(shù)據(jù)字典6. SQL Server 2000企業(yè)版安裝教程7. Microsoft SQL Server 查詢處理器的內(nèi)部機(jī)制與結(jié)構(gòu)(1)8. Oracle中的高效SQL編寫PARALLEL解析9. SQL SERVER 2005 EXPRESS不能遠(yuǎn)程連接的問題10. MYSQL SQL查詢近7天一個(gè)月的數(shù)據(jù)的操作方法
