如何在 postgresql 中使用 age() 函数

铁托

我在学生表中有一个名为生日的列。我需要找到 12 岁以上的学生。

select ......, age(timestamp 'birthdate') as StudentAge
from students
.....
where StudentAge > 11

我不知道这是否是正确的语法,或者我是否在这种情况下使用了正确的函数

IMSoP

我认为您的大部分困惑来自不熟悉 Postgres 的丰富类型系统及其使用的语法。

日期/时间函数页面中age函数以两种形式列出。假设您想与“今天”进行比较,您需要带有单个参数的表单:

函数:age(timestamp)
返回类型:interval
描述:减去current_date(午夜)
示例:age(timestamp '1957-06-13')
结果:43 年 8 月 3 天

所以,你有一个函数,它接受一个 type 的值timestamp,并返回一个 type 的值interval

该示例显示输入被指定为timestamp '1957-06-13'; 这只是timestamp从硬编码值创建类型值的一种方法- 就像在面向对象的语言中创建对象一样。在您的查询中,birthdate不是硬编码值,而是列名,因此这不是您想要的语法。如果列的类型为timestamp,则可以直接使用age(birthdate)如果没有,您可能需要转换它,例如age(CAST(birthdate AS timestamp)).

输出的类型是interval,而不是年数,因此将它与它进行12比较不太可能做你想要的。相反,您应该将其与另一个interval进行比较timestamp '1957-06-13'示例类似,您可以编写interval '12 years'直接创建一个interval表示 12 年值。

所以你的比较看起来像age(birthdate) >= interval '12 years'.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

何时以及如何在PostgreSQL中使用窗口函数?

如何在Postgresql函数中使用变量进行循环查询

如何在PostgreSQL函数中使用COMMIT和ROLLBACK

如何在PostgreSQL中使用函数插入多行

如何在 EFCore 中使用 postgresql 反向函数

我应该如何在 PostgreSQL 中使用 COALESCE 函数?

在PostgreSQL中使用AGE函数订购时间戳记的持续时间

在postgresql中使用递归查询时如何使用聚合函数

如何在PostgreSQL表中使用自定义函数作为列的默认值

如何在 sqlalchemy 的 ORM 中使用 postgresql 的 jsonb_each 函数

如何在其他函数中使用 RETURNING id 中的值作为参数 - Postgresql

PostgreSQL、SQL:如何在现成函数中使用行值作为参数?

如何在Postgresql中使用Extract函数作为单个结果来获取小时和分钟

如何在 Postgresql 中正确使用 GROUP BY 函数

如何在 postgresql 中为不同的表使用嵌套函数?

如何在 PostgreSQL 中使用多个分区

如何在PostgreSQL中使用Gin索引

春季:如何在PostgreSQL中使用KeyHolder

如何在PostgreSQL的tryCatch中使用dbGetQuery?

如何在PostgreSQL中使用日期格式?

如何在Firebird中使用(PostgreSQL的DISTINCT ON)?

如何在javascript中使用postgresql?

如何在 sequalize PostgreSQL 中使用 $and

如何在PostgreSQL中使用参数

如何在蒸气中使用 PostgreSQL 事务

如何在 NodeJS 12 Lambda 函数中使用 async/await 将 S3 JSON 文件流式读取到 postgreSQL?

如何在 RDS aurora PostgreSql 中使用 sha512 二进制字符串函数?

PostgreSQL中的age(datfrozenxid)如何计算?

如何在函数中使用复杂的模式?