gpt4 book ai didi

sql - 有效日期格式检查 Oracle - 奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 21:52:16 24 4
gpt4 key购买 nike

我们一直在研究一些遗留代码,并找到了检查日期(VARCHAR2)是否以正确格式“YYYY-MM-DD HH24:MI:SS”传递的函数。它使用简单的构造

function IS_CORRECT_TIMESTAMP(P_EVENT_TIMESTAMP varchar2)
return number is
V_TIMESTAMP timestamp;
begin
select TO_TIMESTAMP(NVL(P_EVENT_TIMESTAMP, '1'),
'YYYY-MM-DD HH24:MI:SS')
into V_TIMESTAMP
from DUAL;
return 1;
exception
when others then
return - 1;
end;

问题是,当我传递“22-AUG-13”等值时,它不会引发任何异常。这可能是什么原因?

感谢您的想法。

最佳答案

FX 格式模型修饰符可用于要求字符串与格式模型之间精确匹配:

select TO_TIMESTAMP(P_EVENT_TIMESTAMP, 'FxYYYY-MM-DD HH24:MI:SS')
into V_TIMESTAMP
from DUAL;

此外,您可以通过不查询 DUAL 表来将字符串转换为 timestamp 数据类型来防止上下文切换:

V_TIMESTAMP := TO_TIMESTAMP(P_EVENT_TIMESTAMP, 'FxYYYY-MM-DD HH24:MI:SS');

关于sql - 有效日期格式检查 Oracle - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18377049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com