坐端端同学 2022-01-17 19:31 采纳率: 100%
浏览 171
已结题

mysql根据出生日期计算年龄并且插入到已有记录中

业务扩展中增加了年龄字段,原来有出生日期字段
问题相关代码,请勿粘贴截图
-- c.增加年龄字段,并且由出生日期算出插入到表中
alter table info_feedback
add fd_age varchar(11)
after fd_birthday

insert into info_feedback(fd_age)
select ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422)
from info_feedback
where id is not null
运行结果及报错内容

1364 - Field 'fd_name' doesn't have a default value, Time: 0.000000s

我的解答思路和尝试过的方法

我认为报错是因为默认插入的是全部的记录列表,包括还没有数据内容的;想知道怎么插入到已有记录的那里呢?

img

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2022-01-17 19:51
    关注

    fd_name字段不能为空吧
    你这逻辑不对啊,应该是修改不是新增。

    update info_feedback f set fd_age=(
    select ROUND(DATEDIFF(CURDATE(), fd_birthday)/365.2422)
    from info_feedback
    where id=f.id)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: