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(),但没有运气。
答案 0 :(得分:0)
您可以简单地相互减去两个date
,因此您根本不需要extract()
功能:
SELECT date - first_value(date) OVER (ORDER BY date) + 1;
请注意,减法会产生整数天,就像extract()
函数一样。但与extract()
不同,上述解决方案也适用于月份边界(例如“7月9日” - “6月27日”= 12,其中extract()
将给出-18(除非您首先将日期差异转换为interval
))。