如何检查Oracle中的时间格式

kpbwa7wx  于 2022-12-22  发布在  Oracle
关注(0)|答案(1)|浏览(200)

我需要检查字符串的格式是否为time**HH24:MI:SS**。
我做了一个函数

CREATE OR REPLACE FUNCTION check_time(myStr VARCHAR2) RETURN INT IS
   p_temp DATE;
BEGIN
     p_temp := TO_DATE(myStr, 'HH24:MI:SS');    
   RETURN 1;
 EXCEPTION WHEN others THEN RETURN 0;
END;

但是TO_DATE()在得到023之间的数字时没有失败;我需要字符串的确切格式**HH24:MI:SS**与冒号。
我正在寻找使用Oracle日期/时间格式的解决方案。

bqujaahr

bqujaahr1#

如果要防止Oracle对转换应用宽松规则,则可以添加“FX”格式修饰符:

p_temp := TO_DATE(myStr, 'FXHH24:MI:SS');

在最新版本的Oracle中,您不需要自己的函数,可以使用validate_conversion(),它将给予相同的0/1结果:

validate_conversion('<your_string>' as date, 'FXHH24:MI:SS')

fiddle以及一些有效和无效值示例。

相关问题