淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問(wèn)題
最近用mysql導(dǎo)出表數(shù)據(jù)到excel文件,mysql中的datetime類型導(dǎo)出到excel(excel2016)中被excel識(shí)別成它自己默認(rèn)的日期格式了,在mysql中的格式形如 yyyy-mm-dd hh:mm:ss,到了excel變成了 yyyy/m/d h:mm,看起來(lái)不太習(xí)慣,當(dāng)然可以通過(guò)設(shè)置excel單元格格式改成自定義格式 yyyy-mm-dd hh:mm:ss,但是這樣多了一個(gè)步驟,能不能直接從mysql導(dǎo)出到excel的就是mysql顯示的樣式呢?當(dāng)然可以。
開始猜想是由于mysql中該字段是datetime類型的,導(dǎo)出到excel后excel自動(dòng)轉(zhuǎn)為它的日期類型,所以可以通過(guò)mysql的date_format函數(shù)把datetime轉(zhuǎn)為字符串,以為沒有問(wèn)題,結(jié)果還是一樣的,猜想是對(duì)于這種標(biāo)準(zhǔn)日期的字符串的格式excel也會(huì)識(shí)別成日期格式,于是在導(dǎo)出語(yǔ)句中加上一個(gè)字符串的日期,驗(yàn)證了我的猜想。所以就尋思打破這種默認(rèn)的日期格式但使得它看上去又沒什么差別,所以在用date_format轉(zhuǎn)為字符串時(shí),在前面加上一個(gè)空格,這樣就完美解決了。
測(cè)試用表及測(cè)試數(shù)據(jù)
CREATE TABLE `users` (
`username` varchar(255) NOT NULL,
`create_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 插入測(cè)試數(shù)據(jù)
INSERT INTO `users`(`username`, `create_time`) VALUES
('李四', '2018-10-11 15:54:23'),
('張三', '2018-10-12 15:54:14');
導(dǎo)出excel語(yǔ)句,注意DATE_FORMAT函數(shù)里面的格式前面加了個(gè)空格(由于表的格式是utf8的,要保證excel打開后不亂碼,需要把格式轉(zhuǎn)換為gbk)
SELECT username, DATE_FORMAT( create_time, ' %Y-%m-%d %H:%i:%s' ) FROM users INTO OUTFILE '/tmp/user_info.xls' CHARACTER SET gbk;
大功告成,這樣導(dǎo)出的excel,不會(huì)在把日期識(shí)別成日期格式,而變成了文本格式,這樣就能展示自己想要的風(fēng)格的日期了

補(bǔ)充知識(shí):將Excel文件導(dǎo)入到Navicat Premium中日期變?yōu)?000-00-00的解決方案
問(wèn)題
在某些場(chǎng)景下,需要將本地文件導(dǎo)入到Navicat中。筆者今天遇到的問(wèn)題是,將excel文件成功導(dǎo)入后,一個(gè)在excel中原本正確的日期字段在Navicate中卻變成了“0000-00-00 00:00:00”,實(shí)在是匪夷所思。
分析
經(jīng)過(guò)觀察發(fā)現(xiàn),該日期字段在excel中似乎沒有全部顯示,比如本來(lái)是2018/10/1 0:01:42,excel中顯示為01:42.0,于是嘗試在excel中修改了該列的單元格格式,重新導(dǎo)入Navicate中,問(wèn)題得到解決。詳細(xì)解決方法請(qǐng)見下方。

解決方法
1.導(dǎo)入前,在excel中修改單元格格式,設(shè)置為自定義,類型為yyyy/m/d h:mm:ss,并保存文件。

2.重新將文件導(dǎo)入到Navicate中即可。

以上這篇淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql left join的基本用法以及on與where的區(qū)別
我們?cè)趯憇ql語(yǔ)句的時(shí)候,總是無(wú)法避免使用到連接關(guān)鍵詞,比如內(nèi)連接、外連接,下面就是詳細(xì)的介紹,需要的朋友可以參考下2023-05-05
mysql中用于數(shù)據(jù)遷移存儲(chǔ)過(guò)程分享
mysql 數(shù)據(jù)遷移用的一個(gè)存儲(chǔ)過(guò)程,需要的朋友可以收藏下。2011-05-05
Window中MySQL繞過(guò)密碼登錄的底層原理詳解
在 MySQL 中,root 用戶的密碼存儲(chǔ)和認(rèn)證機(jī)制隨著版本的升級(jí)發(fā)生了變化,繞過(guò)密碼登錄主要依賴于 --skip-grant-tables 選項(xiàng),本文將詳細(xì)分析 MySQL 繞過(guò)密碼的底層原理,并解釋為什么某些操作在 --skip-grant-tables 模式下無(wú)效,以及如何正確生效修改2025-02-02
MySQL分庫(kù)分表動(dòng)態(tài)擴(kuò)容縮容方式
MySQL分庫(kù)分表動(dòng)態(tài)擴(kuò)容縮容方案,通過(guò)選擇數(shù)據(jù)庫(kù)中間件,設(shè)計(jì)分庫(kù)分表方案,進(jìn)行環(huán)境測(cè)試,完成單庫(kù)單表到分庫(kù)分表的遷移,實(shí)現(xiàn)雙寫方案,并上線提供服務(wù),擴(kuò)容時(shí),通過(guò)增加數(shù)據(jù)庫(kù)服務(wù)器,呈倍數(shù)擴(kuò)容,由DBA負(fù)責(zé)庫(kù)表遷移,無(wú)需修改路由規(guī)則,即可基于新的資源提供服務(wù)2025-02-02
CentOS 7 安裝Percona Server+Mysql
這篇文章主要介紹了CentOS 7 安裝Percona Server+Mysql的相關(guān)資料,需要的朋友可以參考下2018-11-11

