我想询问有关更新表格中的年龄列的信息。是否可以根据我的表格中的出生日期列每年自动更新年龄。年龄栏和出生日期栏位于同一个表格中。但是,如果这是不可能的,也许我只是每次选择年龄栏并从出生日期栏计算年龄时更新年龄表。我只是有点好奇,如果有一个即时的方式来做到这一点。每年自动增加或更新年龄列mysql
回答
不要存储“年龄”。如果您有DOB列,那么“年龄”仅仅是当前日期和时间与DOB之间的差异。如果您希望根据特定日期计算“年龄”,那么它仍然是该日期和DOB之间的差异。
您可以使用MySQL内置TIMESTAMPDIFF
函数来计算“时代”多年来,例如:在你的出生日期栏
SELECT TIMESTAMPDIFF(YEAR, '1993-10-01' ,NOW()) AS age_in_whole_years
替补多为在表达字面。只要您运行包含此表达式的语句,就会自动计算该值。你不能得到更多的“自动”比。
如果您需要根据年龄进行“搜索”,请改为在DOB列上使用谓词。要找到“年龄”小于21的行,那么DOB不到21年前,也就是说,DOB大于今天的日期减去21年。例如
WHERE t.dob > NOW() - INTERVAL 21 YEARS
要回答你问的问题:
没有,有没有在MySQL的是将“自动增加或更新”存储在“年龄”列中的值。 (要更改存储在列中的值,您需要运行UPDATE语句。)可以将计划任务设置为定期运行,但该任务需要发出UPDATE语句。如果你愿意,你可以称之为“自动”。他们已经知道存储的“年龄”列的“自动递增”是一个坏主意,而且已经有了更好的解决方案。)
我非常肯定,StackOverflow不存储问题和答案的“年龄”,“1小时前问”,或发布“4个月前”。让他们翻阅桌面,为每个问题,每个评论,每个答案......更新一行,这将是疯狂的。他们真正需要的是存储日期和时间的东西发布,他们设置它,并忘记它...没有搅动更新语句,获得排他锁,生成撤销/回滚,写入重做日志,这只会锤击数据库。对于检索,他们已经在做所有的工作来运行SQL来检索行,发布的日期时间在那里,他们只是检索它,并且它对于“年龄”计算的处理量是微不足道的。
啊,你的例子真的让我大开眼界大声笑 – 2014-10-04 05:47:29
- 1. 每年自动更改的年龄
- 2. 重置Mysql自动增加值每年?
- 3. 增量列每年在MYSQL
- 4. 自动递增列其重置每年
- 5. 我想每年更改年龄列和性别下拉菜单
- 6. 自动测试用户的年龄每年都会失败
- 7. 每年更新Mysql中的列
- 8. 自动年龄计算ASP.Net
- 9. 如何自动更改年龄
- 10. MySQL - 年龄分钟
- 11. 在MYSQL中每年更改自动增量字段值
- 12. 每年自动更新表格数据
- 13. 如何年龄增加ageList = [12,13,23]
- 14. MYSQL:计算年龄从2年开始
- 15. git推动年龄
- 16. 每年重置自动增量(身份)
- 17. 每年重置自动增量编号
- 18. 我想每24小时增加一个表的年龄值
- 19. 在sqlite中自动更新人的年龄
- 20. 在SQL中计算年龄年龄
- 21. 从MySQL选择年龄和
- 22. 年龄格式 - 年和月
- 23. 发现DateOFBirth来自年龄
- 24. AngularJs:出生时自动获得年龄
- 25. 当出生时自动获得年龄
- 26. 自动递增年环
- 27. 每年增加每节患者预约
- 28. 添加到数组列表(按年龄)
- 29. 按年龄打印阵列
- 30. 加入年龄段为AgeGroup
请勿使用年龄栏;记录出生日期,并基于此计算年龄。 – 2014-10-04 01:45:43
您可以使用事件调度程序定期更新年龄列。 – Barmar 2014-10-04 01:46:41
@JonathanLeffler是的,我也是这么想的。但我有点好奇,有没有办法做到这一点。如果这是不可能的,也许我只是删除年龄列 – 2014-10-04 01:48:47