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
我有一个 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