日期类型为

时间:2017-10-23 22:51:44

标签: sql spring postgresql

您好我有一个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转换为日期无效。 我抨击这个问题,任何帮助都会令人惊讶

2 个答案:

答案 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和文本表示都适用于此类转换。