对于日期类型为空



您好,我有一个 sql 更新,需要日期类型的 nullif。当我第一次使用 null 语句提交它而不使用 null 语句进行更新时,它很好并且通过,但第二次总是出现错误。

UPDATE del_data.cncpt_rqst
        SET prpsd_prodn_dt=#{cncptDt}
        WHERE cncpt_rqst_id=#{cu.cncptRqstId}

但是,对于 nullif,NULLIF(#{cncptDt},'')它说 '' 是文本类型而不是日期。我尝试通过"::d ate强制转换",输入空,以便(#{cncptDt},null)并强制转换该空,但都无济于事。我对这个问题猛烈抨击我的头,任何帮助都会很棒

您应该强制转换表达式到日期:

UPDATE del_data.cncpt_rqst
    SET prpsd_prodn_dt = nullif(#{cncptDt}, '')::date
由于不可能

''::date,你应该将第一个投射到文本中:

postgres=# select nullif('2016-01-01'::date::text, '');
   nullif
------------
 2016-01-01
(1 row)

之后您可以将其转换为 ::d ate - 日期的 null 和文本表示对于此类转换都有效。

相关内容

  • 没有找到相关文章

最新更新