如何修改这个列?

select * from back limit 30;

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');

为何这个语句不行?
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;
这样做太麻烦了。

阅读 2k
3 个回答

不行的错误提示是什么?

select * from back limit 2;
+-------------+-------------+-------------------------+
| code        | report_date | total_operating_revenue |
+-------------+-------------+-------------------------+
| 000002.XSHE | 0000-00-00  |                    15567|
| 000002.XSHE | 0000-00-00  |                    23012|

日期类型是date的,只保存年类型是year的,这样肯定改不过来的。可以先加个字段类型是year的字段report_date2,把report_date的年存到report_date2上
UPDATE back set report_date2=DATE_FORMAT(report_date,'%Y')
再把report_date字段删了,report_date2名字改成report_date

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题