十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在Mysql中计算年龄:
创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元安乡做网站,已为上家服务,为安乡各地企业和个人服务,联系电话:18982081108
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM 表名;
首先呢根据题目来看实在数据库实现的时候没有考虑全面。在设计阶段可以只有出生日期,但应该能分析到年龄是经常使用的,必须将年龄设计成派生属性,在关系的实现时将其作为表的一个列age,并为其设置默认值year(getdate())-year(出生日期),这样在查询的时候直接查选age即可。建议修改表结构,一劳永逸。其次,如果不修改表结构,也只能使用sql中的日期函数,比如datediff。在这给出sqlserver中的写法:
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
还有一种办法,就是在应用编程中操作,利用脚本语言进行处理。
主要的区别是占用空间和表示范围
tinyint 占用1字节
表示非负: 0--255
无符号表示:-128--127
举例表示人的年龄就可以用:age tinyint;
smallint 占用2字节
表示非负:0--2^16-1 既 0到65535
无符号表示:-2^15--2^15-1
举例表示乌龟的年龄:agewg smallint;
int 占用4字节
表示非负 0--2^32-1 既 零到四十二亿九千万
无符号表示:-2^31--2^31-1
举例表示恐龙化石年龄:agekl int;
bigint 占用8字节
表示非负 0--2^64-1 这已经是天文数字了,能表示 18后面17个零那么大的数字
无符号表示:-2^63--2^63-1
bigint比较占用空间,一般都不用。
举例表示宇宙年龄:ageyz bigint;
完全手打亲!