无法在postgresql中运行日期差异

ht4b089n  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(307)

我有以下数据集:

CREATE TABLE my_table 
(
    the_debt_id varchar(6) NOT NULL, 
    the_debt_paid date NOT NULL, 
    the_debt_due date NOT NULL
)

INSERT INTO my_table
VALUES ('LMUS01', '2019-05-03', '2019-05-02'), 
       ('LMUS01', '2019-06-03', '2019-06-02'), 
       ('LMUS01', '2019-07-01', '2019-07-02'), 
       ('LMUS02', '2019-05-03', '2019-05-07'), 
       ('LMUS02', '2019-06-07', '2019-06-07')

我尝试运行此查询:

SELECT EXTRACT(DAY FROM the_debt_paid - the_debt_due) AS date_diff 
FROM my_table

告诉我这个错误:

ERROR:  function pg_catalog.date_part(unknown, integer) does not exist
LINE 1: SELECT EXTRACT(DAY FROM the_debt_paid - the_debt_due) AS dat...

我被这个查询卡住了,为什么提取函数不起作用,你能帮我吗?谢谢您。

am46iovg

am46iovg1#

你不需要 extract() ,一个简单的差异就可以了。

SELECT the_debt_paid - the_debt_due AS date_diff 
FROM my_table

正如手册中所记载的,两者之间的区别 date 值是它们之间的天数。
extract适用于 date , timestamp 以及 interval 表达。正如手册所述,两者之间的区别 date 价值观是一个 integer ,和 extract 对整数根本不起作用。
另外, extract(day from some_interval) 只给出间隔的一天部分,而不是间隔的天数。e、 g.区间值为 3 months 0 days , extract(day from ...) 会回来的 0

nnvyjq4y

nnvyjq4y2#

SELECT (DATE_PART('year', '2012-01-01'::date) - DATE_PART('year', '2011-10-02'::date)) * 12 +
              (DATE_PART('month', '2012-01-01'::date) - DATE_PART('month', '2011-10-02'::date));

--结果:3这里有一个例子,你可以尝试一下

相关问题