Sql 如何在oracle中设置日期加天数参数

Sql 如何在oracle中设置日期加天数参数,sql,oracle,Sql,Oracle,我在oracle中添加日期加天数的set参数时遇到问题。我有两个参数。一个用于日期,一个用于日期。我试过那种方法,但没有成功 这是我的问题: SELECT DISTINCT mhn.id_mohon, mhn.kod_urusan, mhn.kod_caw, nvl(to_char(mhn.trh_masuk, 'DD/MM/YYYY'), '-') trh_mohon, nvl(to_char(mhn.trh_masuk, 'MM'), '-') bln

我在oracle中添加日期加天数的set参数时遇到问题。我有两个参数。一个用于日期,一个用于日期。我试过那种方法,但没有成功

这是我的问题:

SELECT DISTINCT
  mhn.id_mohon,
  mhn.kod_urusan,
  mhn.kod_caw,
  nvl(to_char(mhn.trh_masuk, 'DD/MM/YYYY'), '-') trh_mohon,
  nvl(to_char(mhn.trh_masuk, 'MM'), '-')         bln
 FROM mohon mhn
WHERE mhn.trh_masuk = to_date(:p_date1, 'DD/MM/YYYY') + INTERVAL :days DAY;

您能检查我的参数有什么问题吗?

我希望您需要:

to_date(:p_date1,'DD/MM/YYYY') + :days
或:

表示间隔长度必须是一个引用的固定值;它不能是变量

您可以改为使用:

或者你可以:


“未成功”不是可识别的错误消息。请添加您实际看到的内容-我猜可能是OA-00923?但我的结果不会出现。我不知道我的参数有什么问题。你能检查我的错误在哪里吗?但是我应该使用什么数据类型?varchar、数字、nvarchar或date@AminSCO-什么的数据类型?”p_date1`是一个
varchar2
:days
是一个
数字
.ok2.我知道了。to_date(mhn.trh_masuk,'DD/MM/yyyyy')=to_date(:p_date1,'DD/MM/yyyyyy')+:days*间隔'1'天。我使用的'p_date1'是一个日期,而:days是一个varchar。谢谢:)trh_masuk不是已经是一个
日期
字段了吗?在
选择中使用
to_char()。看起来你最终会做这样的隐式转换,不管怎样,这总是个坏主意。(不知道为什么你会把
:days
作为一个
varchar2
而不是一个数字,我更喜欢
numtodsinterval()
而不是乘法,但我想对你有用的任何东西都是…*8-)是的,THU masuk是日期,但当我没有把日期放在一起时,结果不会出现。我还更改了:天数。然后结果出现了。我不知道我的oracle有什么问题。我的答案更多的是“to_date(:p_date1,'DD/MM/YYYY')+:days”
to_date(:p_date1,'DD/MM/YYYY') + :days * INTERVAL '1' DAY
mhn.trh_masuk = to_date(:p_date1,'DD/MM/YYYY') + numtodsinterval(:days, 'DAY')
mhn.trh_masuk = to_date(:p_date1,'DD/MM/YYYY') + :days