Oracle apex 在我的sql语句中使用项中的新值,而不将此值保存到数据库

Oracle apex 在我的sql语句中使用项中的新值,而不将此值保存到数据库,oracle-apex,oracle-apex-5,oracle-apex-5.1,Oracle Apex,Oracle Apex 5,Oracle Apex 5.1,我正在尝试将我刚刚在项目中输入的日期值(:P2007_Session_date-它是一个日期选择器-)与我表中的日期值进行比较。此新值尚未保存在我的数据库中。 我该怎么做? 我试着和爸爸谈谈,但什么都没发生 时间: 事件:变更,项目:P2007\u会话\u日期 True操作集值:SQL语句 选择策略。价格 来自政策 其中POLICIES.ACTIVE=1 和to char(**:P2007_Session_Date**,'YYYY-MM-DD'),介于to char(POLICIES.START

我正在尝试将我刚刚在项目中输入的日期值(:P2007_Session_date-它是一个日期选择器-)与我表中的日期值进行比较。此新值尚未保存在我的数据库中。 我该怎么做? 我试着和爸爸谈谈,但什么都没发生

时间: 事件:变更,项目:P2007\u会话\u日期 True操作集值:SQL语句 选择策略。价格 来自政策 其中POLICIES.ACTIVE=1 和to char(**:P2007_Session_Date**,'YYYY-MM-DD'),介于to char(POLICIES.START_Date,'YYYY-MM-DD')和to char(POLICIES.END_Date,'YYYY-MM-DD')之间 要提交的项目:P2007\u会话\u日期,:P2007\u价格 受影响因素:P2007\u价格 这给了我这个错误,Ajax调用返回了服务器错误ORA-01722:设置值的数字不可接受。 但是,当我将查询从to_char(:P2007_Session_Date,'yyyyy-MM-DD')更改为to_char(sysdate,'YYYY-MM-DD')时,它就工作了!
问题是,我想检查的不是sysdate,而是用户刚刚输入的值:P2007\u Session\u Date项,它还没有存储在数据库中。

顶点项是字符串,不管它们代表什么数据类型。因此,如果页面项中有日期值,则必须将其转换为pl/sql中的日期。语句
TO_CHAR(:P2007_SESSION_DATE,'YYYY-MM-DD')
不正确,它期望绑定变量:P2007_SESSION_DATE为数据类型日期或时间戳,但由于这是一个顶点项,因此它只是一个字符串

最干净的解决方案是只进行日期比较,而不是字符比较(这在您的情况下是可行的)

请尝试使用以下语句:

SELECT
  policies.price
  FROM
  policies
 WHERE
  policies.active = 1 AND
  TO_DATE (:P2007_SESSION_DATE,'YYYY-MM-DD' ) BETWEEN policies.start_date AND policies.end_date

嗨,Koen,谢谢你的回复。不幸的是,a出现了一个新错误:Ajax调用返回了服务器错误ORA-01858:在设置值应为数字的位置找到了一个非数字字符。该错误并不表示日期存在问题。我建议您在调试模式下运行页面,并调查ajax调用的调试条目。这应该会显示错误发生的位置,并为您提供发生这种情况的线索。如果我更改:P2007_SESSION_DATE,'YYYY-MM-DD'和sysdate(没有错误),那么您的代码工作得很好,但是当我尝试比较此项的值时,会出现此错误。我无法理解调试功能的任何内容(我对此非常陌生),问题在于我的项的格式(:P2007_SESSION_DATE)。我需要小时和分钟的格式(DD-MON-YYYY HH24:MI),因为我想将此值用于约会,但当我将格式更改为(MM-DD-YYYY)时,它会工作…语句的“YYYY-MM-DD”需要与页面项的格式掩码匹配。我以为他们是一样的。是吗?