我希望用戶能夠輸入日期格式字符串,以便他們可以指定他們希望如何顯示/輸入日期值。如何測試日期格式字符串是否是Oracle中的有效日期格式字符串
如何驗證此日期格式字符串,以便他們只能輸入有效的Oracle日期格式字符串?
我希望用戶能夠輸入日期格式字符串,以便他們可以指定他們希望如何顯示/輸入日期值。如何測試日期格式字符串是否是Oracle中的有效日期格式字符串
如何驗證此日期格式字符串,以便他們只能輸入有效的Oracle日期格式字符串?
,你可以創建一個函數:
如:
FUNCTION is_valid_date_format (
p_format IN VARCHAR2)
RETURN BOOLEAN IS
l_date VARCHAR2(100) := NULL;
BEGIN
l_date := TO_char(sysdate, p_format);
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END is_valid_date_format;
,並在瞬間就會讓時間格式也使用這樣的
IF is_valid_date_format('dd/mm/yyyy') THEN
,但是這將是簡單將其擴展爲不允許包含不需要的格式的格式,例如:hh hh24 mi ss
加:(你可能會想先大寫的格式字符串)
IF INSTR(p_format,'HH')>0 OR INSTR(p_format,'HH24')>0
OR INSTR(p_format,'MI')>0 OR INSTR(p_format,'SS')>0 THEN
RETURN FALSE
END IF;
感謝凱文,但這不是我的問題的答案。我不想知道p_date_as_string是否與p_format匹配。我想知道,如果p_format是一個有效的格式。 – Rene
抱歉我的錯誤我會更新..... –
據推測,如果他們進入一個無效的格式,你的代碼會拋出一個'ORA-01821:日期格式無法識別error'當您嘗試使用它 - 你不能把這個回傳給調用應用程序嗎? – StevieG
您還需要考慮有日期格式是有效的,但實際上沒有用,例如, 'DD',這將允許用戶輸入'12',這意味着當前月份的第12個月。因此,我建議你向他們提供一個可供選擇的格式列表,而不是讓他們自己定義格式。 –
謝謝,您的建議。可能的格式列表可能是最簡單的。 – Rene