sql - SQL中的getAge取决于两个日期

标签 sql postgresql date sql-date-functions

我正在尝试根据两个日期计算一个人的年龄。它只适用于数据库中注册的 50% 的人,其余的只需要第一个人的年龄。

知道问题出在哪里吗?

CREATE OR REPLACE FUNCTION getAge ()
       RETURNS INT
       LANGUAGE SQL
    AS
    $$
    SELECT CAST (
                (EXTRACT (YEAR FROM CURRENT_DATE))
              - (EXTRACT (YEAR FROM birth_date)) AS INTEGER)
      FROM person;
    $$;

最佳答案

在 Postgres 上你可以使用 age function

+----------------+----------+------------------------------------------+-----------------------------+------------------------+
| age(timestamp) | interval | Subtract from current_date (at midnight) | age(timestamp '1957-06-13') | 43 years 8 mons 3 days |
+----------------+----------+------------------------------------------+-----------------------------+------------------------+
select extract(year from age(timestamp '1957-06-13'))
| date_part |
| :-------- |
| 59        |

dbfiddle here

关于sql - SQL中的getAge取决于两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43431591/

相关文章:

Django/postgresql - 只有外键的模型

python - SQLAlchemy 名称错误 : Name 'db' is not defined (? )

java - 如何在Java中检测今天或明天是该月的第二个还是最后一个星期三?

reactjs - 在 MUI 中设置 "DD/MM/YYYY"格式

mysql - 将行插入 MySQL 数据库

mysql - 根据其他字段中的值将一个字段拆分为多列

sql - 带有命名空间的 PostgresQL xpath

php - 我可以从一个基于多个其他表的表中获取数据吗?

mysql - 在 Max 语句之前/期间更改字段的值

java - 如何在java中获取本地化数据?