我有以下在MySQL中正常运行的SQL查询:

SELECT floor(datediff(u.created_at, curdate()) / 1) AS days_ago

我正在努力将其从MySQL转换为PostgreSQL,但到目前为止却失败了……这是我到目前为止的结果:

SELECT floor(DATEDIFF(u.created_at, NOW()) / 1) AS days_ago

这是错误的:

ERROR:  function datediff(timestamp without time zone, timestamp with time zone) does not exist
LINE 1: SELECT  floor(DATEDIFF(u.created_at, NOW()) / 1) AS days_ago...

如何使该查询正常工作?

分析解答

我认为您的版本将产生一个负数。那是你打算的吗?

无论如何,在Postgres中,您可以取两个日期之差:

SELECT (u.created_at::date - current_date) as days_ago