浅谈mysql导出表数据到excel关于datetime的格式问题

所属分类: 数据库 / Mysql 阅读数: 1543
收藏 0 赞 0 分享

最近用mysql导出表数据到excel文件,mysql中的datetime类型导出到excel(excel2016)中被excel识别成它自己默认的日期格式了,在mysql中的格式形如 yyyy-mm-dd hh:mm:ss,到了excel变成了 yyyy/m/d h:mm,看起来不太习惯,当然可以通过设置excel单元格格式改成自定义格式 yyyy-mm-dd hh:mm:ss,但是这样多了一个步骤,能不能直接从mysql导出到excel的就是mysql显示的样式呢?当然可以。

开始猜想是由于mysql中该字段是datetime类型的,导出到excel后excel自动转为它的日期类型,所以可以通过mysql的date_format函数把datetime转为字符串,以为没有问题,结果还是一样的,猜想是对于这种标准日期的字符串的格式excel也会识别成日期格式,于是在导出语句中加上一个字符串的日期,验证了我的猜想。所以就寻思打破这种默认的日期格式但使得它看上去又没什么差别,所以在用date_format转为字符串时,在前面加上一个空格,这样就完美解决了。

测试用表及测试数据

CREATE TABLE `users` (
 `username` varchar(255) NOT NULL,
 `create_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
# 插入测试数据
INSERT INTO `users`(`username`, `create_time`) VALUES 
 ('李四', '2018-10-11 15:54:23'),
 ('张三', '2018-10-12 15:54:14');

导出excel语句,注意DATE_FORMAT函数里面的格式前面加了个空格(由于表的格式是utf8的,要保证excel打开后不乱码,需要把格式转换为gbk)

SELECT
 username,
 DATE_FORMAT( create_time, ' %Y-%m-%d %H:%i:%s' ) 
FROM users 
 INTO OUTFILE '/tmp/user_info.xls' 
 CHARACTER SET gbk;

大功告成,这样导出的excel,不会在把日期识别成日期格式,而变成了文本格式,这样就能展示自己想要的风格的日期了

补充知识:将Excel文件导入到Navicat Premium中日期变为0000-00-00的解决方案

问题

在某些场景下,需要将本地文件导入到Navicat中。笔者今天遇到的问题是,将excel文件成功导入后,一个在excel中原本正确的日期字段在Navicate中却变成了“0000-00-00 00:00:00”,实在是匪夷所思。

分析

经过观察发现,该日期字段在excel中似乎没有全部显示,比如本来是2018/10/1 0:01:42,excel中显示为01:42.0,于是尝试在excel中修改了该列的单元格格式,重新导入Navicate中,问题得到解决。详细解决方法请见下方。

解决方法

1.导入前,在excel中修改单元格格式,设置为自定义,类型为yyyy/m/d h:mm:ss,并保存文件。

2.重新将文件导入到Navicate中即可。

以上这篇浅谈mysql导出表数据到excel关于datetime的格式问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

MySQL中按照多字段排序及问题解决

这篇文章主要介绍了MySQL中按照多字段排序及问题解决的方法,非常的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

MySQL外键使用详解

两天有人问mysql中如何加外键,今天抽时间总结一下。mysql中MyISAM和InnoDB存储引擎都支持外键(foreign key),但是MyISAM只能支持语法,却不能实际使用。
收藏 0 赞 0 分享

Mysql中LAST_INSERT_ID()的函数使用详解

从名字可以看出,LAST_INSERT_ID即为最后插入的ID值,有了这个实用的函数,我们可以实现很多问题,下面我们就来深入探讨下。
收藏 0 赞 0 分享

MySql insert插入操作的3个小技巧分享

这篇文章主要介绍了MySql insert插入操作的3个小技巧分享,本文讲解了插入的数据来源自其他表、插入时排除(忽略)重复记录、插入时遇到重复记录做更新操作三个小技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql修改自增长主键int类型为char类型示例

这篇文章主要介绍了mysql修改自增长主键int类型为char类型示例,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows下使用Cygwin编译MySQL客户端

这篇文章主要介绍了Windows下使用Cygwin编译MySQL客户端,本文详细的讲解了编译过程,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL数据库优化推荐的编译安装参数小结

这篇文章主要介绍了MySQL数据库优化推荐的编译安装参数小结,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL之Field‘***’doesn’t have a default value错误解决办法

这篇文章主要介绍了MySQL之Field‘***’doesn’t have a default value错误解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

php连接MySQL的两种方式对比

这篇文章主要介绍了php连接MySQL的两种方式对比,一种是原生的链接方式另外一种是PDO方式,附上示例,推荐给大家,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

Mysql InnoDB删除数据后释放磁盘空间的方法

这篇文章主要介绍了Mysql InnoDB删除数据后释放磁盘空间的方法,Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长,本文就讲解释放磁盘空间的方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多