PostgreSQL -如何在从jsonb数据的SELECT中转换为时间戳时处理无效值

iszxjhcz  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(105)

我正在尝试从jsonb列获取数据,需要将属性从有效负载转换为时间戳。但是当值为空或无效时,查询中止。
这是我的选择语句。

Select
    (jsonb_path_query(AnchorNode, '$.TestDate')#>> '{}')::timestamp as TestDate
From (
      Select 
          jsonb_path_query_first(payload, '$.node1[*].node2[*]') as AnchorNode
      From TestTable
     ) subq1

无效值只能是日期或空值。
我如何更改查询来处理此问题?大约有7或8个日期字段需要执行此操作
谢谢你

5ktev3wc

5ktev3wc1#

可能会尝试在函数内部转换文本,并在出现异常时返回null

create or replace function str_to_timestamp(_date text) returns timestamp
language plpgsql AS
$$
    BEGIN
        return _date::timestamp;

        EXCEPTION WHEN OTHERS THEN
            return null::timestamp;
    END;
$$;

相关问题