2017-10-23 2 views
1

こんにちは私は日付型のnullifを必要とするSQLの更新があります。最初にヌルステートメントで更新するためのnullifなしでそれを提出すると、それはうまくいっていますが、2回目には常にエラーが発生します。 日付型のNULLIF

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

しかしNULLIFよう NULLIF(#{cncptDt},'')と、それは 'text型ではない日であることを述べています。 Iveは `':: dateを経由して日付をキャストしようとしましたが、 (#{cncptDt},null)というヌルを入力し、その日付をnullにキャストしても役に立たなかった。 Imはあなたがこれまでの表現をキャストする必要があります任意の助けが

答えて

1

素晴らしいだろう、この問題に対する私の頭をたたき:

UPDATE del_data.cncpt_rqst 
    SET prpsd_prodn_dt = nullif(#{cncptDt}, '')::date 
0

それは''::dateを行うことはできませんので、あなたの代わりにテキストに最初のものをキャストする必要があります。

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

その後に::日付にキャストすることができます。ヌルと日付のテキスト表現は、このような変換に有効です。

関連する問題