你们数据库会直接存用户的年龄吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ghjh
V2EX    程序员

你们数据库会直接存用户的年龄吗?

  •  
  •   ghjh 16 天前 12001 次点击

    吐槽贴

    接反馈,用户用了两年平台了,显示的年龄一直都是 32 岁,想问问怎么回事

    那么看代码就很清楚了。用户注册时候让填年龄,后端直接把年龄作为一个单独字段存起来了,然后用户自己也没地方改

    我辛勤的同事们啊

    103 条回复    2025-09-27 11:27:39 +08:00
    1  2  
    Meijer
        1
    Meijer  
       16 天前   2
    用生日啊
    mooyo
        2
    mooyo  
       16 天前   1
    乐,顶级设计
    hkiJava
        3
    hkiJava  
       16 天前   1
    程序和程序员有一个能跑就行了(逃
    Cloud9527
        4
    Cloud9527  
       16 天前   4
    冻龄了
    panxi
        5
    panxi  
       16 天前
    哈? 这不是段子吗? 怎么还真有人存年龄字段
    uqf0663
        6
    uqf0663  
       16 天前   13
    [手动狗头] 也不是不能用,一定有注册时间的字段吧?算一下当前年份跟注册时间的年份相差几年,把这个数字+年龄数字字段再更新回去,这就补救完了,然后再整个计划任务,每年 1 月 1 日 0 点整个数据库年龄字段+1 ,对屎山就开始堆了。
    malusama
        7
    malusama  
       16 天前   1
    用生日啊, 我的天。 至少填年龄的时候后端得转成出生的年份把。 你现在咋改
    callv
        8
    callv  
       16 天前
    天才哈哈
    JoeDH
        9
    JoeDH  
       16 天前
    说明你们这个字段并不重要啊
    lchynn
        10
    lchynn  
       16 天前   2
    SELECT
    EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM 注册日期) + 年龄字段 AS 当前年龄
    FROM 表名;
    shen13176101
        11
    shen13176101  
       16 天前   1
    我没记错的话,qq 也是单独字段存起来的吧。之前每年手动改年龄
    poic
        12
    poic  
       16 天前
    这种只能写个作业定时每天跑一次刷一下
    rm0gang0rf
        13
    rm0gang0rf  
       16 天前
    这有啥?算回生日更新字段不就行了
    tabris17
        14
    tabris17  
       16 天前   55
    这是墓园系统吗?
    qwwuyu
        15
    qwwuyu  
       16 天前
    年龄+当前时间-注册时间
    xuanbg
        16
    xuanbg  
       16 天前
    年龄肯定要算的,不管你存的是什么,反正都有办法算的。譬如你直接存注册时填写的年龄,那按楼上 V 友的算法就可以得到“理论上正确”的年龄了。
    slert
        17
    slert  
       16 天前   1
    当时实现需求的时候没动脑子 你就说实没实现吧 至少管用 1 年没问题
    javalaw2010
        18
    javalaw2010  
       16 天前
    说来惭愧,这事我也干过。主要是因为产品经理他就这么设计的,修改年龄的控件不是个日期组件而是个数字 picker ,我发现问题了但我又懒得让他改,数据库就直接设计一个 age 字段完事了。
    janpun
        19
    janpun  
       15 天前
    @malusama 直接今年-注册年+注册时年龄就是现在的年龄,也能用,只要不收集出生日期,都不会特别准。
    cwcc
        20
    cwcc  
       15 天前
    椰树牌椰汁都不敢直接保存年份作为包装,更何况信息系统
    ovtfkw
        21
    ovtfkw  
       15 天前 via iPhone
    qq 的年龄不是也不会变化的?
    renmu
        22
    renmu  
       15 天前 via Android
    要看场景,如果医院场景那正确的年龄就是非常重要的,如果是社交场景,自定义的年龄可能更适合用户
    snailya
        23
    snailya  
       15 天前   4
    简单,UI 改成注册时年龄
    ghjh
        24
    ghjh  
    OP
       15 天前
    查完 blame 之后,这东西看起来是外包做的
    结题,散会!
    InDom
        25
    InDom  
       15 天前
    设计可以, 但需要提供用户“编辑年龄”的功能, 虽然还是屎一样, 但用户不会找到你头上了.
    inhzus
        26
    inhzus  
       15 天前
    开除外包以祭天
    jackOff
        27
    jackOff  
       15 天前
    赛博死亡笔记吗?填完就销户?
    Ketteiron
        28
    Ketteiron  
       15 天前
    笑麻了
    但这本质上不是外包的问题,是请了外包以及没做好验收的问题
    Kiriri
        29
    Kiriri  
       15 天前
    倒是可以根据注册时间算一下
    edsion1107
        30
    edsion1107  
       15 天前
    小米运动健康的?怎么跟我反馈的问题一模一样……
    keller
        31
    keller  
       15 天前
    外包不还是按照需求做的?产品谁设计的
    Cloud9527
        32
    Cloud9527  
       15 天前
    其实没毛病,我就想记录用户注册时的年龄
    hervey0424
        33
    hervey0424  
       15 天前
    写个任务, 每年执行一次增加以下年龄
    knva
        34
    knva  
       15 天前
    天才,我说的是数据库设计
    Cruzz
        35
    Cruzz  
       15 天前
    有注册时间自己算一下呗,问题不大。
    rabbbit
        36
    rabbbit  
       15 天前
    还行,没说后端让前端自己根据注册时间加一下。
    julyclyde
        37
    julyclyde  
       15 天前
    我大学时的学生证上也是写的年龄
    一些其他的证件(我指的不是死亡证明)好像也是年龄
    nekoneko
        38
    nekoneko  
       15 天前
    如果是我设计的话, 一般会把生日存为虚拟列.
    idealhs
        39
    idealhs  
       15 天前
    同事纯脑瘫,我刚毕业也写不出这种唐氏逻辑
    realpg
        40
    realpg  
    PRO
       15 天前
    以前 QQ 就得每年自己改...
    T1205
        41
    T1205  
       15 天前
    看看有没有创建时间,然后根据当前的时间计算一把
    Rat3
        42
    Rat3  
       15 天前
    年龄不参与业务的话,有啥问题吗,之前 qq 就这么设计的
    HHAO2019
        43
    HHAO2019  
       15 天前
    不是产品的问题吗
    Hopetree
        44
    Hopetree  
       15 天前   4
    只能说,产品是天才,开发也是,前端是,后端也是,测试也是,这一个简单的问题,暴露出一群天才
    v2er119
        45
    v2er119  
       15 天前
    各位都是写代码的,都没想到:有没有可能原始需求就是要一个注册时的用户年龄,然后后面 UI 显示成 实时年龄了。
    jiangzm
        46
    jiangzm  
       15 天前
    有生日信息就不要填年龄信息,不需要生日信息可以单独填年龄的话应该就是个参考信息,用户自己决定对外展示的年龄。
    wangtian2020
        47
    wangtian2020  
       15 天前
    你不说我还真想不起来这种情况。屁大点事不至于上纲上线,改就完事了
    wangtian2020
        48
    wangtian2020  
       15 天前
    社交软件万一用户要装自己永远 18 岁呢
    henshang
        49
    henshang  
       15 天前   1
    @uqf0663 #6 直接全部推算出注册年月日,洗库,然后废弃之前年龄字段不就行了,你这什么回路
    unco020511
        50
    unco020511  
       15 天前
    哈哈,永远 18 岁了
    henshang
        51
    henshang  
       15 天前
    @hervey0424 #33
    @poic #12 你们真的是设计过数据库吗
    op351
        52
    op351  
       15 天前
    实际上有些商业 HR 系统的人员表里是有 AGE (年龄)字段的
    我看了我司的 HR 系统的这张表,AGE 是自动更新的
    xiaobei206
        53
    xiaobei206  
       15 天前
    设置年龄可以让用户自己随便修改不就完事了,以前 QQ 就这样
    duzhuo
        54
    duzhuo  
       15 天前 via Android
    哈哈 上学没教吗
    Pipecraft
        55
    Pipecraft  
       15 天前
    开发团队不 review 代码吗?
    就算 review 代码做不到,数据库设计总要 review 吧?
    都不做?那就不要抱怨是哪位同事或外包写的了。
    lc5900
        56
    lc5900  
       15 天前
    写个 job ,每天定时扫下过生日的人加一岁(不是
    zerovoid
        57
    zerovoid  
       15 天前
    明显是产品的问题,正常不是应该填写生日么,而且也要有修改生日的入口,
    大概率产品就画了一个年龄,其他啥也没有,或者压根就没产品。
    zerovoid
        58
    zerovoid  
       15 天前
    @op351 #52 HR 系统看情况吧,如果没入职的人,填个求职时的年龄也正常,入职了就要更新了。
    leo72638
        59
    leo72638  
       15 天前
    笑死,重新算一遍重新存就好了
    Howlaind
        60
    Howlaind  
       15 天前
    再每年给发一次通知,让用户自己改年龄
    WuDiHaiTai
        61
    WuDiHaiTai  
       15 天前
    #60 +1 解决不了问题就解决人,下次开 App 弹出界面让填生日,底下写行小字,说生日当天有福利,进一步吸引用户填写,不愿意填写的就直接把年龄隐藏掉,用户点击年龄就如上述,这种情况天知地知你知我知,用户八辈子也猜不到是你们搞错了年龄数据库。
    bowencool
        62
    bowencool  
       15 天前
    再不济拿注册日期加一下啊
    v1
        63
    v1  
       15 天前
    不绑定身份证的,让用户自己选生日、写年龄,都不可信
    jadeborner
        64
    jadeborner  
       15 天前
    不都有创建日期这个字段吗?保存年纪咋了
    soul11201
        65
    soul11201  
       15 天前
    @lchynn 他们公司的同事真是人才
    isbase
        66
    isbase  
       15 天前
    哈哈哈,说明后端写的时候没动脑子
    levelworm
        67
    levelworm  
       15 天前 via iPhone
    UI 上面改成注册年龄就完了,其他啥也不用。
    EastLord
        68
    EastLord  
       15 天前
    今日乐子+1
    Bootis
        69
    Bootis  
       15 天前
    1
    yeelone
        70
    yeelone  
       15 天前   1
    @levelworm #67 有点屎上雕花的味道了哈哈哈
    BeiChuanAlex
        71
    BeiChuanAlex  
       15 天前
    @tabris17 #14 张三|普通炉|男| 18 岁
    MIUIOS
        72
    MIUIOS  
       15 天前
    实际上好多开源系统 age 都是 int 哈哈哈哈哈,我当初也发现了这个问题
    spadger
        73
    spadger  
       15 天前
    天才设计
    fooso
        74
    fooso  
       15 天前
    国脚 1573 每年都改广告词。
    IMengXin
        75
    IMengXin  
       15 天前
    @qwwuyu 已经自己手动改了的怎么办
    /div>
    helionzzz
        76
    helionzzz  
       15 天前
    不做实名绑定的也就是个字段而已吧,不过不管怎么样修改口还是要给客户的
    qwwuyu
        77
    qwwuyu  
       15 天前
    @IMengXin 有审题的,看内容 "然后用户自己也没地方改"
    dcdlove
        78
    dcdlove  
       15 天前
    @panxi 常见阿,十多年的外包公司,中的 sb 后端每个项目里都有年龄字段也是前台提交的
    kfpenn
        79
    kfpenn  
       15 天前
    天才
    Admstor
        80
    Admstor  
       15 天前
    扩展思维
    我怎么觉得在一些场景直接存年龄没啥问题呢?

    比如成人内容的时候,同时也遵循隐私保护,那么年龄只是确认客户是否达到法律年龄即可,没必要存详细的生日,既满足法规也保护隐私,这就足够了啊
    Leon777
        81
    Leon777  
       15 天前
    可以优化一下界面把用户年龄隐藏了
    hikarumx
        82
    hikarumx  
       15 天前
    鬼才设计
    RicardoY
        83
    RicardoY  
       15 天前
    是会存年龄字段的(年龄段),满足法规要求 & 保护隐私
    wancoco
        84
    wancoco  
       15 天前
    用户当前年龄 = 当前日期 - createDateTime + 年龄
    我不是天才谁还算天才!
    wangtian2020
        85
    wangtian2020  
       15 天前
    @lc5900 闰年生日:?
    poic
        86
    poic  
       15 天前
    @henshang #51 都已经这样了,那咋办嘛,总不能从头都改一遍吧
    ganbuliao
        87
    ganbuliao  
       15 天前
    @uqf0663 哈哈哈 对屎山都是这么来的 明明很简单的东西,也不思考 费了一圈的劲,各种增加复杂度,堆成了一座无法撼动的山 最好偷偷写个 cron 用 sql 改 这样别人重构了代码莫名的就新增了一个 BUG
    flytsuki
        88
    flytsuki  
       15 天前
    用户表存生日,记录表存年龄,方便知道什么年龄的记录
    gefranks
        89
    gefranks  
       15 天前
    这同事挺有远见的, DOB 算是 PII.
    newaccount
        90
    newaccount  
       15 天前
    你好,我们这个年龄他不是实际意义上的年龄
    他记录的是用户注册那个时间点的年龄
    目的是在注册时合法合规
    如果深究,那就是这审核规范是从欧美日航港澳台小网站上一路做顺手了
    hervey0424
        91
    hervey0424  
       15 天前
    @henshang 现在已经这样得情况下, 难道写个更新年龄的任务不是最简单的处理方式吗?
    Krylo
        92
    Krylo  
       15 天前
    哈? 你们是 zhibo8 吗?
    前几天查利物浦球员信息发现萨拉赫、范戴克咋还是 30 出头呢,看旁边球员生日算出年龄还是 2 年前的。
    Krylo
        93
    Krylo  
       15 天前
    banxiaobu
        94
    banxiaobu  
       14 天前
    笑死,前司某个业务系统中的一张表真有地方真的是单独存的,有没有用就不知道了,因为我记得还单独存了生日字段
    hammy
        95
    hammy  
       14 天前
    哈哈 有点好笑 感谢 lz
    lyxxxh2
        96
    lyxxxh2  
       14 天前

    会,用阿里云人脸分析的年龄。

    社交看情况吧,可能某些原因只要大概年龄。
    后端偷懒而已,懒着再次计算年龄。
    henshang
        97
    henshang  
       14 天前
    @poic #86
    @hervey0424 #91
    不改接口确实整个事务最简单,但是如果没有出生年月推算一下洗库,然后改一下接口计算逻辑会更恰当点,应该也费不了多少时间把
    lyxxxh2
        98
    lyxxxh2  
       14 天前
    @henshang
    看到你们讨论,居然还改字段??? 无语了。
    年龄 = 当前时间 - 注册时间 + 年龄
    fengpan567
        99
    fengpan567  
       14 天前
    那真的牛批
    edsion1107
        100
    edsion1107  
       14 天前
    @edsion1107 补充下,运动健康 app 的年龄应该不是社交属性,心率区间是根据这个来算的,所以年龄在很多时候还蛮重要的
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4590 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 04:01 PVG 12:01 LAX 21:01 JFK 00:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86