You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中计算列的方法:如何查询用户出生年份?

正确计算出生年份的SQL写法

嘿,你遇到的问题是因为CURRENT_YEAR并不是通用的SQL内置函数——不同数据库获取当前年份的语法不一样,我给你整理几种主流数据库的正确写法:

  • MySQL/MariaDB:用YEAR(CURDATE())来获取当前年份,语句如下:

    SELECT name, age, YEAR(CURDATE()) - age AS yearOfBirth FROM person;
    

    也可以用YEAR(NOW()),效果是一样的。

  • PostgreSQL:可以用EXTRACT(YEAR FROM CURRENT_DATE)或者DATE_PART('year', CURRENT_DATE),示例语句:

    SELECT name, age, EXTRACT(YEAR FROM CURRENT_DATE) - age AS yearOfBirth FROM person;
    
  • SQL Server:使用YEAR(GETDATE())来获取当前年份:

    SELECT name, age, YEAR(GETDATE()) - age AS yearOfBirth FROM person;
    
  • Oracle:通过EXTRACT(YEAR FROM SYSDATE)获取当前年份:

    SELECT name, age, EXTRACT(YEAR FROM SYSDATE) - age AS yearOfBirth FROM person;
    

额外补充一句:如果需要更精准的出生年份(比如考虑当前日期是否已经过了用户的生日),那通常需要存储具体的出生日期字段(比如birth_date DATE)来计算,但你现在只有整数类型的age字段,上面的写法就是基于当前年份减去年龄的合理近似值啦。

内容的提问来源于stack exchange,提问作者winter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:17:38