Обсуждение: when timestamp is null
hi,
  i want to update rows of a table where the column defined
as type timestamp is null.
update cust set cust_svc_start_dt = cust_svc_end_dt -1
where cust_svc_start_dt is null;
<bold>ERROR:  Unable to convert null timestamp to date
</bold>
how can i get around this?  i've tried to_char and casting
as date, time, etc.  to no avail.
TIA,
  mikeo
\d cust
                Table "cust"
     Attribute     |    Type     | Modifier
-------------------+-------------+----------
 cust_id           | varchar(15) | not null
 cut_id            | varchar(6)  |
 cust_name         | varchar(50) |
 cust_division     | varchar(6)  |
 cust_svc_start_dt | timestamp   |
 cust_svc_end_dt   | timestamp   |
 cust_valid        | varchar(1)  |
 cust_bill_loc_id  | varchar(6)  |
 wu_id             | varchar(10) |
 cust_timestamp    | timestamp   |
 agt_id            | integer     |
 rse_id            | integer     |
 bd_id             | varchar(6)  |
 cust_email        | varchar(50) |
 cust_stream       | integer     |
 br_cycle          | bigint      |
			
		mikeo <mikeo@spectrumtelecorp.com> writes:
>   i want to update rows of a table where the column defined
> as type timestamp is null.
> update cust set cust_svc_start_dt = cust_svc_end_dt -1
> where cust_svc_start_dt is null;
> ERROR:  Unable to convert null timestamp to date
I suspect the problem here is that cust_svc_end_dt is also null in those
records, or some of them anyway, and the expression
"cust_svc_end_dt::date - 1" is what's failing.
IMHO it's a bug that the current implementation of timestamp-to-date
kicks out an error for a null timestamp; it should just play nice and
return a null date.  (This is already fixed for 7.1, BTW.)
In the meantime you could do something with a CASE expression to
substitute an appropriate result when cust_svc_end_dt is null:
UPDATE cust SET cust_svc_start_dt = CASE
    WHEN cust_svc_end_dt IS NULL THEN whatever
    ELSE cust_svc_end_dt -1
    END
WHERE ...
            regards, tom lane
			
		thank you very much, that worked wonderfully. i didn't even think about the end date being null. mikeo At 04:16 PM 7/12/00 -0400, Tom Lane wrote: >mikeo <mikeo@spectrumtelecorp.com> writes: >> i want to update rows of a table where the column defined >> as type timestamp is null. > >> update cust set cust_svc_start_dt = cust_svc_end_dt -1 >> where cust_svc_start_dt is null; > >> ERROR: Unable to convert null timestamp to date > >I suspect the problem here is that cust_svc_end_dt is also null in those >records, or some of them anyway, and the expression >"cust_svc_end_dt::date - 1" is what's failing. > >IMHO it's a bug that the current implementation of timestamp-to-date >kicks out an error for a null timestamp; it should just play nice and >return a null date. (This is already fixed for 7.1, BTW.) > >In the meantime you could do something with a CASE expression to >substitute an appropriate result when cust_svc_end_dt is null: > >UPDATE cust SET cust_svc_start_dt = CASE > WHEN cust_svc_end_dt IS NULL THEN whatever > ELSE cust_svc_end_dt -1 > END >WHERE ... > > regards, tom lane >