您好我有一个sql更新,需要nullif作为日期类型。当我第一次使用null语句提交没有nullif进行更新时,它很好并且通过但是第二次总是出现错误。
UPDATE del_data.cncpt_rqst
SET prpsd_prodn_dt=#{cncptDt}
WHERE cncpt_rqst_id=#{cu.cncptRqstId}
然而,对于nullif,NULLIF(#{cncptDt},'')
表示''是文本类型而不是日期。我已经尝试通过'':: date输入''到日期,输入null (#{cncptDt},null)
并将该null转换为日期无效。
我抨击这个问题,任何帮助都会令人惊讶
答案 0 :(得分:2)
您应该将表达式转换为日期:
UPDATE del_data.cncpt_rqst
SET prpsd_prodn_dt = nullif(#{cncptDt}, '')::date
答案 1 :(得分:0)
由于无法执行''::date
,您应该先将第一个转换为文本:
postgres=# select nullif('2016-01-01'::date::text, '');
nullif
------------
2016-01-01
(1 row)
您可以将其投射到:: date之后 - 日期的null和文本表示都适用于此类转换。