从第一个条目到当前行条目的行日期(以天为单位)之间的差异

时间:2015-07-09 05:35:25

标签: sql postgresql

SELECT EXTRACT(DAYS FROM date - first_value(date) over (ORDER BY DATE)) + 1 days

我让这段代码工作正常但是在将日期列从timestamp切换到date之后,它犯了错误:

ERROR:  function pg_catalog.date_part(unknown, integer) does not exist
LINE 1: SELECT id, EXTRACT(DAYS FROM date - first_value(date) over (...
                   ^
    HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

我尝试在日期周围包装to_timestamp(),但没有运气。

http://i.imgur.com/lTyqqyh.png

1 个答案:

答案 0 :(得分:0)

您可以简单地相互减去两个date,因此您根本不需要extract()功能:

SELECT date - first_value(date) OVER (ORDER BY date) + 1;

请注意,减法会产生整数天,就像extract()函数一样。但与extract()不同,上述解决方案也适用于月份边界(例如“7月9日” - “6月27日”= 12,其中extract()将给出-18(除非您首先将日期差异转换为interval))。