我有一個動態操作,我想在觸發之前在JavaScript條件中執行一些檢查。我希望它只顯示一個區域,如果從數據庫返回到只讀字段(P4_NEXT_RENEWAL_DATE)的日期比今天的系統日期晚。Oracle Apex 5中的動態操作無法將日期與Oracle進行比較
我的Oracle表具有日期字段,返回到一個只讀頁面項目:
P4_NEXT_RENEWAL_DATE
這將返回一個值,如:
下一個續約日期
16-JUL-2017
我有一個動態的動作,看起來如下:
(
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='Yes' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Agree')
||
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='No' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Disagree')
)
&&
Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date()
它是不工作這最後一點,
&& Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date()
,我希望如果我的未來只會顯示該區域續約日期晚於今天的日期....但它顯示該地區,無論日期是過去還是未來。
我不確定我的只讀字段是否返回P4_NEXT_RENEWAL_DATE中日期的字符串版本,或者Apex是否知道它來自Oracle的日期值,所以javascript會將其視爲日期值...我有嘗試了幾個date.parse()方法,但似乎沒有任何工作。
我也嘗試不使用date.parse,並且使用我將不得不通過返回的原始Date對象的直apex.item.getValue()調用,但沒有運氣之一:
&& apex.item('P4_NEXT_RENEWAL_DATE').getValue() > new Date()
任何意見讚賞。
我沒有在'Date.parse'上找到線索,但我可以告訴你P4_NEXT_RENEWAL_DATE中的值是一個**字符串**例如'16 -JUL-2017' 。所以問題是:Date.parse'可以處理那種格式的字符串嗎? –
Oracle爲什麼會從日期列中獲取日期值,然後將其保存在一個頁面項中,該頁是一個字符串類型的綁定(?)變量?我嘗試使用3個Oracle子串將日期分成3部分......然後從部分「2017年7月16日」中構建一個字符串等,但仍然沒有歡樂 – smackenzie
Google'Date.parse'和'DD-MMM-YYYY '爲解決方案提供建議。 'apex.item'是一個Javascript函數(由Oracle提供),它看到的只是一個「文本」類型的輸入,它不查看數據庫中的列,因此它不知道它擁有日期值。 –