【问题标题】:Extract Year from Date and insert into new field从日期中提取年份并插入新字段
【发布时间】:2026-02-23 17:10:01
【问题描述】:

我知道我可以用

提取我的ordered_date 字段的年份
SELECT YEAR(STR_TO_DATE(ordered_date, "%Y-%m%d")) from wccrm_orders

我试过了

insert into wccrm_orders (year) values
(SELECT YEAR(STR_TO_DATE(ordered_date, "%Y-%m%d")) from wccrm_orders)

但它只是在最后一个 id 之后添加空条目...

如何将结果插入新字段“年份”?

感谢您的帮助。

BR,斯特凡

【问题讨论】:

  • 不用values试试吧
  • 去掉括号。

标签: mysql sql sql-insert


【解决方案1】:

您在寻找update吗?

update wccrm_orders
    set year = year(str_to_date(ordered_date, '%Y-%m%d'));

根据逻辑,您也可以这样做:

update wccrm_orders
    set year = left(ordered_date, 4) + 0;

不清楚为什么要将日期与ordered_date 分开存储。只需将日期存储为datedatetime。然后您可以在需要时计算年份。

【讨论】:

  • 亲爱的 Gordon,谢谢你——你说的完全正确。没有插入,只是更新!像魅力一样工作!
【解决方案2】:

这样就可以了:

insert into wccrm_orders (year) values(SELECT YEAR(STR_TO_DATE(ordered_date)) from wccrm_orders)

如果没有,请尝试:

insert into wccrm_orders (year) values(SELECT YEAR(ordered_date) from wccrm_orders)

【讨论】:

  • 亲爱的 Rafiul,感谢您抽出宝贵时间。更新解决了这个问题! BR,斯特凡