Postgres无效的日期格式

时间:2017-12-12 00:50:43

标签: postgresql datetime

以下是我数据库中某列的一些日期样本。目前,这些日期值存储在varchar中,我计划将这些值设置为另一个表中的时间戳。

如何设置默认规则以将所有无效日期格式强制转换为NULL值或某种'00 / 00/0000 00:00:00'格式?

pickup_time 

01/01/2016 07:35:00 
00:00:00
31/12/2015
07:35:00 

期望:

pickup_time 

01/01/2016 07:35:00 
NULL
31/12/2015 00:00:00
00/00/0000 07:35:00 

1 个答案:

答案 0 :(得分:1)

好的,这是基本的想法,所以你需要根据你想要处理的每种情况设置一个带有正则表达式的if / else(或者用来计算字符串模式的东西)。

create or replace function my_super_converter_to_timestamp(arg text)
returns timestamp language plpgsql
as $$
begin
    begin
        -- if(arg like '00:00:00') do something ...
        return arg::timestamp;
    exception when others then
        return null;
    end;
end $$;