ERROR: invalid value "" for "yyyy"

错误信息

invalid value "" for "yyyy" (seg0 slice1 10.157.3.15:6000 pid=40808)
DETAIL: Value must be an integer.

环境背景

在进行存储过程插入表数据的时候,在进行字符串转日期格式的时候,插入目标表字段要求是date类型,但是原表是字符串类型,并且这个字段在原表中还存在数据是空字符串的,有长度是空,出现了以上问题,

再直接说就是select to_date(' ','yyyy-MM-dd')这样写就会报错,说明你的数据里面这个字段有为一个空格的数据。可以查询出来看看。

sql:TO_DATE( SUBSTRING ( 'date', 1, 10 ), 'yyyy-mm-dd' ) makedate

原表 date字段是 这样的格式 2021-05-11 10:00:01,这里可以不用截取,因为在pg数据库中只会保存yyyy-mm-dd 格式的,会自动截取。

如果date字段是空的话,就会报以上错误,

解决方式:判断一下,如果是空的字符串(有长度),需要使用trim()方法。不等于空的时候才进行插入,否则目标表就会自动赋值null,

方式:case when trim(date) != '' then to_date(SUBSTRING (date, 1, 10),'yyyy-MM-dd') end makedate

这样就不报错了。

在补充一下,在pg数据库中使用to_date(),它是只保存yyyy-mm-dd 格式的,注意一下。date_format函数在pg数据库怎么替换(pg数据库格式化日期)

posted @ 2022-12-29 15:03  哩个啷个波  阅读(1237)  评论(0编辑  收藏  举报