如何解决postgres db中的此SQL查询问题?

时间:2019-01-25 07:12:48

标签: sql postgresql

我有一个SQL查询,该查询必须返回过期的租金列表,并且知道我在Postgres中编写此查询,如下所示:

SELECT 
    CONCAT(customer.last_name, ', ' , customer.first_name) AS customer,
    address.phone, film.title
FROM 
    rental 
INNER JOIN 
    customer ON rental.customer_id = customer.customer_id
INNER JOIN 
    address ON customer.address_id = address.address_id
INNER JOIN 
    inventory ON rental.inventory_id = inventory.inventory_id
INNER JOIN 
    film ON inventory.film_id = film.film_id
WHERE 
    rental.return_date IS NULL
    AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE
LIMIT 5;

但是当我在pgAdmin中运行此查询时,出现此错误:

  

错误:“电影”或附近的语法错误
  第8行:AND租借日期+ INTERVAL电影。rental_durationDAY

出什么问题了?

1 个答案:

答案 0 :(得分:1)

间隔添加的正确语法如下:select current_date + interval '1 day'。您缺少一些撇号,因此它不能以这种方式工作。

如果将第8行更改为以下形式,那应该没问题:

AND rental_date + film.rental_duration < CURRENT_DATE

如果rental_duration不是整数类型,请按照以下步骤操作:

AND rental_date + film.rental_duration::int < CURRENT_DATE

如果rental_date是时间戳记:

AND rental_date + interval '1 day' * film.rental_duration < CURRENT_DATE