有没有一种快速的方法来更改列的格式?

时间:2020-03-13 03:05:29

标签: mysql

select * from back limit 2;    
code    report_date total_operating_revenue
000002.XSHE 1989-12-31  15567
000002.XSHE 1990-12-31  23012

我想保留字段report_date的年份。
我的尝试失败了:

update back set report_date = date_format(report_date,'%Y');
select * from back limit 2;
+-------------+-------------+-------------------------+
| code        | report_date | total_operating_revenue |
+-------------+-------------+-------------------------+
| 000002.XSHE | 0000-00-00  |                    15567|
| 000002.XSHE | 0000-00-00  |                    23012|

其他尝试:

create table new as 
select code,date_format(report_date,'%Y') as report_date,total_operating_revenue from back;
drop table back;
rename table new TO back; 

我觉得使用三个mysql语句更改字段很复杂。
是否有一种快速的方法来更改列的格式,而不仅仅是选择它?

3 个答案:

答案 0 :(得分:1)

您甚至不应该考虑存储年份;您已经有完整的日期,可以轻松地从中得出年份。只需使用:

SELECT
    code,
    YEAR(report_date) AS report_year,
    total_operating_revenue
FROM back;

注意:如果要使用LIMIT,则还应该使用ORDER BY。我不知道您的逻辑,因此我没有在回答中使用LIMIT

答案 1 :(得分:0)

alter table back modify column report_date char(4);

它可以将report_date之类的字段1989-12-31的值更改为1989

答案 2 :(得分:0)

如果您希望更轻松地更改数据库方案,我建议使用 GUI 程序,因为它们通常会使处理过程更容易。

我建议您调查:

MySQL Workbench -免费-MySQL标准

HeidiSQL -免费-我最喜欢它,因为它轻巧并且具有很多功能(仅Windows,Linux需要Wine)

phpMyAdmin -免费(使用PHP)

DataGrip -InteliJ的付费数据库产品。