Oracle:如何从固定日期中减去 table 列中的日期

Oracle: how to substract a date from table column from a fixed date

我有一个 table,其中包含一个名为“date_started”的日期格式的列。我想从这个列中减去固定日期的所有日期,例如 31.03.2022,从而产生一个新列“绝对天数”,显示两个日期之间的天数差异。

我尝试使用以下语句:

SELECT ('31.03.2022'- date_started) 作为绝对天数 从....

不幸的是,我无法找到针对生成的错误消息的解决方法:

ORA-00932: Inkonsistente 数据类型: CHAR erwartet, DATE erhalten 00932.00000 - “不一致的数据类型:预期的 %s 得到了 %s”

我是 SQL 的初学者,尤其是 Oracle 方面的新手,期待您的帮助,谢谢!

'31.03.2022' 可能看起来像日期,但它不是 DATE 数据类型;它是一个字符串文字。

如果您想要 DATE 数据类型,那么您可以使用日期文字:

SELECT DATE '2022-03-31' - date_started AS absolut_days
FROM   your_table;

或者将您的字符串转换为日期:

SELECT TO_DATE('31.03.2022', 'DD.MM.YYYY') - date_started AS absolut_days
FROM   your_table;

然后,对于示例数据:

CREATE TABLE your_table (date_started) AS
SELECT DATE '2022-01-01' FROM DUAL;

双输出:

ABSOLUT_DAYS
89

db<>fiddle here