我正在編寫一個使用Oracle數據庫進行存儲的Java軟件。我可以最好地將它描述爲一種審計跟蹤(?),記錄我的測試受衆做了什麼,在什麼日期和什麼電腦上。這些都是手動輸入,所以人們手動輸入這些信息,然後將其保存到數據庫中,然後由管理員查看。Oracle中是否有一個函數/ SQL查詢過濾數據,如果它可以轉換爲DateTime?
這裏的SQL語句我使用的檢索數據:
SELECT fld 1 as EmpNumber,
fld2 as EmpName,
fld6 as Date
FROM tblReportTemp
LEFT JOIN tblPersonalInfo b ON $P{hrStoreOp}= b.ID_PERSONAL
WHERE computerName = $P{COMPNAME}
ORDER BY fld6,fld2 asc
我的隊友決定讓所有領域的VARCHAR類型,然後決定讓用戶在Date類型,而不是,使用日期選擇器。因此,很多測試用戶,懶惰的測試用戶,只需簡單地輸入最容易達到的內容,例如Q或1,甚至空間。所以首先,它不會按日期正確安排,其次,在排列它之前,我通過TO_DATE(fld6,'MM/dd/yy')將數據轉換爲日期的嘗試遭遇失敗,因爲它無法將'Q'轉換爲日期。
我已經用日期選擇器替換了文本框,但是,我們不允許修改數據庫。
所以我建議的解決方案是修改上面的SQL語句以過濾那些無法轉換爲日期的。是否有Oracle的SQL查詢可以執行此操作?
謝謝。
我個人的建議總是使用控件,如日期選擇器,它可以防止用戶輸入無效日期,並且減少檢查工作是否是日期等等。 – 2013-04-26 03:28:25
如果你使用日期選擇器,你可以使用日期選擇器想要,但最好的防禦方法是讓該列成爲「DATE」類型。日期選擇器將處理具有日期選擇器的頁面上輸入的日期,但這不是將日期值存入數據庫的唯一方法。 – 2013-04-26 03:31:33
是的,我已經修改了模塊的這一部分。用戶從現在開始輸入的每件東西都是日期。但是,正如我所說的,根據我們的教師指示,數據庫不能修改,因爲「在現實世界中,您不能修改公司的數據庫等等。」我們必須忍受我們的錯誤並想辦法解決它。 – 2013-04-26 03:38:12