我正在尝试编写 redshift udf 来验证时间戳。但是,它总是返回 false。有人可以解释一下为什么吗?
create or replace function f_Is_timestamp_sql(VARCHAR(20000))
returns timestamp
STABLE
as $$
select $1::timestamp as a;
$$ language sql;
create or replace function f_Is_timestamp(val VARCHAR(20000))
returns bool
IMMUTABLE
as $$
try:
(f_Is_timestamp_sql(val));
except:
return (1==2);
else:
return 1==1;
$$ language plpythonu;
select f_Is_timestamp('2019-10-09')
在阅读了AWS文档后,我发现一个UDF不能引用另一个UDF的内容。https://docs.aws.amazon.com/redshift/latest/dg/udf-python-language-support.html因此,我的函数总是抛出异常。我找到了一种使用 python 库来完成此任务的替代方法
dateutil.parser
下面的工作函数。
create or replace function f_Is_timestamp(val VARCHAR(20000))
returns bool
IMMUTABLE
as $$
from dateutil.parser import parse;
try:
parse(val,ignoretz=True);
except:
return 1==2;
else:
return 1==1;
$$ language plpythonu;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)