oracle 如何在 PL/SQL 中检查给定的字符串日期是我的 dd-mm-yyyy 格式
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19418688/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to check given string date is my dd-mm-yyyy format in PL/SQL
提问by Duleep
My date format is dd-mm-yyyy. there is a string date I want to check that string date is 'dd-mm-yyyy' if not( like dd/mm/yyyy, 10-OCT-2013) that function will return 'NO'
我的日期格式是 dd-mm-yyyy。有一个字符串日期我想检查字符串日期是否为 'dd-mm-yyyy' 如果不是(如 dd/mm/yyyy, 10-OCT-2013)该函数将返回 'NO'
function checkMydateFormat(checkDate IN VARCHAR)VARCHAR{
IF(check date is 'dd-mm-yyyy')THEN
RETURN 'YES';
ELSE
RETURN 'NO';
END IF;
}
How can I write a PL/SQL function to check string date is correct format?
如何编写 PL/SQL 函数来检查字符串日期格式是否正确?
回答by i100
Try something like this
尝试这样的事情
var par varchar2(20);
exec :par := '17-10-2013';
DECLARE
FUNCTION checkMydateFormat(checkDate IN VARCHAR2)
RETURN VARCHAR2 IS RESULT VARCHAR2(10);
BEGIN
SELECT CASE
WHEN regexp_like('7-10-2013', '\d{2}\-\d{2}\-\d{4}\', 'i') THEN
'yes'
ELSE
'no'
END into RESULT
FROM dual;
RETURN(RESULT);
END checkMydateFormat;
BEGIN
dbms_output.enable(NULL);
dbms_output.put_line(checkMydateFormat(:par));
END;
回答by schurik
you can try to convert the string to the date using the desired format, and catch Exceptions. Somthing like the following:
您可以尝试使用所需格式将字符串转换为日期,并捕获异常。类似于以下内容:
create function checkMydateFormat(checkDate IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR2(3);
v_date DATE;
BEGIN
BEGIN
v_date := to_date(checkDate,'fxdd-mm-yyyy');
v_result := 'YES';
EXCEPTION
WHEN OTHERS THEN v_result := 'NO';
END;
RETURN v_result;
END;
/
回答by ajmalmhd04
CREATE OR REPLACE
FUNCTION checkMydateFormat(
checkDate IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR2(3);
v_date DATE;
BEGIN
v_date := to_date(checkDate,'fxdd-mm-yyyy');
V_RESULT := 'YES';
RETURN V_RESULT;
EXCEPTION WHEN OTHERS THEN
V_RESULT := 'NO';
RETURN v_result;
END;
回答by Ramya Bharathi G
create or replace function checkMydateFormat(checkDate IN VARCHAR2)
RETURN VARCHAR2
IS
v_date DATE;
BEGIN
v_date := to_date(checkDate,'dd-mm-yyyy');
RETURN 'YES';
EXCEPTION
WHEN OTHERS THEN
RETURN 'NO';
END checkMydateFormat;