这里有很多问题。
select DATEDIFF
^^^^
PostgreSQL doesn't have a datediff function.
regress-> \df datediff
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+------+------------------+---------------------+------
(0 rows)
我认为您需要 - 运算符、extract 函数、justify_interval 和 to_char 函数。另外,写current_timestamp而不是now(),这是标准拼写。
还有这个:
(yy, NOW(), select birthdate ...)
^^^
是语法错误,因为您没有将子查询包装在(parentheses) 中,应该是:
(yy, NOW(), (select birthdate ...))
但在这种情况下,不需要子查询,因为您可以将其展平到外部查询中,当子查询已修复但没有其他内容时,它会为您提供:
select DATEDIFF(yy, NOW(), birthdate)
from match where match_id = '550856d8560a64ed180416d1556f5435f4bb054c68930040';
对于日期减法:
regress=> SELECT extract(year FROM justify_interval(current_timestamp - DATE '2008-02-01'));
date_part
-----------
7
(1 row)
给出类似的东西:
SELECT extract(year FROM justify_interval(current_timestamp - birthdate))
from match where match_id = '550856d8560a64ed180416d1556f5435f4bb054c68930040';