mysql字符串时间转换为时间格式
应朋友的要求,帮他采集的一些数据,直接使用的pandas进行的处理,直接入了库,由于比较懒,表结构之前没有进行设计。有一个日期的字段直接是默认以text的方式进行录入的,这个太占用空间了,后面改成了int(8),虽然相对好一些,不过总感觉还是别扭,空下来的时候重新设计了表结构,也顺带把这个数据处理。
上图上可以看出,当前时间格式是YYYYMMDD的格式,而mysql不是按此格式存的,mysql中的date格式是YYYY-MM-DD,占用3 bytes,比上面int(8)少了5个bytes。在处理之前需要先把老的数据进行格式转换,转换处理的SQL语句如下:
1select code,price,name,CONCAT(SUBSTRING(date,1,4),'-',SUBSTRING(date,5,2),'-',SUBSTRING(date,7,2))as date from stock;
使用该语句转换后的格式如下:
接下来使用create table as select语名创建一张新的表,把原来的数据导过去,后面再修改表名:
1CREATE table newstock as (select code,price,name,CONCAT(SUBSTRING(date,1,4),'-',SUBSTRING(date,5,2),'-',SUBSTRING(date,7,2))as date from stock) ;
注:这里需要注意下,使用CREATE TABLE A AS SELECT x,x,x,xx FROM B语句,不会把索引复制过来(CREATE TABLE A LIKE B语句可以复制表和索引),还需要使用alter增加下原有的索引信息。
修改完成后,去修改下date列的格式:
1----有以下两种方式修改数据格式
2alter table newstock change `date` `date` date NOT NULL;
3alter table newstock modify column `date` date NOT NULL;
4---- alter table 旧名 rename (to)新名,下面2种方式都可以
5alter table newstock rename stock;
6alter table newstock rename to stock;
操作结果如下:
1mysql> desc newstock;
2+-------+-------------+------+-----+---------+-------+
3| Field | Type | Null | Key | Default | Extra |
4+-------+-------------+------+-----+---------+-------+
5| code | varchar(10) | NO | | NULL | |
6| price | float(8,2) | YES | | NULL | |
7| name | varchar(20) | YES | | NULL | |
8| date | varchar(10) | YES | | NULL | |
9+-------+-------------+------+-----+---------+-------+
104 rows in set (0.01 sec)
11mysql>
12mysql> alter table newstock modify column `date` date NOT NULL;
13Query OK, 11114 rows affected (0.19 sec)
14Records: 11114 Duplicates: 0 Warnings: 0
15mysql> desc newstock;
16+-------+-------------+------+-----+---------+-------+
17| Field | Type | Null | Key | Default | Extra |
18+-------+-------------+------+-----+---------+-------+
19| code | varchar(10) | NO | | NULL | |
20| price | float(8,2) | YES | | NULL | |
21| name | varchar(20) | YES | | NULL | |
22| date | date | NO | | NULL | |
23+-------+-------------+------+-----+---------+-------+
244 rows in set (0.00 sec)
后面的date已经变成date格式了。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/mysql-convert-date/6525.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.