日期范围为的PostgreSQL更新

日期范围为的PostgreSQL更新,sql,postgresql,common-table-expression,Sql,Postgresql,Common Table Expression,我有一句话很有效,但它是不受约束的,因为它总结了整个专栏,我想介绍日期范围,但我得到了一个错误 这就是有效的方法 UPDATE payroll_employee e SET hours = l.total FROM (SELECT employee, SUM(end_date - start_date) AS total FROM payroll_timelog GROUP BY employee) l WHERE e.id = l.employee 我想介绍一个日期过

我有一句话很有效,但它是不受约束的,因为它总结了整个专栏,我想介绍日期范围,但我得到了一个错误

这就是有效的方法

UPDATE payroll_employee e
    SET hours = l.total
FROM (SELECT employee, SUM(end_date - start_date) AS total
    FROM payroll_timelog
    GROUP BY employee) l
WHERE e.id = l.employee
我想介绍一个日期过滤器。 然后我尝试了这个CTE

WITH cte AS (
  SELECT employee_id, end_date SUM(end_date - start_date) AS total
    FROM payroll_timelog
    WHERE employee_id = 1, AND end_date > 2020-09-01
)
UPDATE payroll_employee e
   SET hours = total
FROM cte
WHERE e.id = 1;

已尝试将日期设置为2020-09-01::日期、2020-09-01::时间戳等,但仍然无效。任何帮助都将不胜感激。

我想您只是有语法错误:

WITH cte AS (
      SELECT employee_id, SUM(end_date - start_date) AS total
      FROM payroll_timelog
      WHERE employee_id = 1 AND end_date > '2020-09-01'
      GROUP BY employee_id
)
UPDATE payroll_employee e
   SET hours = cte.total
FROM cte
WHERE e.id = 1;

“行不通”是什么意思?添加输入参数和预期结果。
前面有一个逗号,因此查询不会解析。get:语法错误位于或接近“(“第2行:选择员工id,结束日期和(结束日期-开始日期。。。