Quiero actualizar varias filas con varias condiciones.
Aquí está mi consulta de selección para probar el resultado.
select name, register_date, expired_date, to_char(register_date + interval '1 year' - interval '1 day', 'YYYY-MM-DD') from tb_agent where agent_id = agent_id and agent_id in (46,47,62)Puede mostrar el resultado como esperaba,
Pero cuando elaboro múltiples actualizaciones con este código
update tb_agent set expired_date = (select to_char(register_date + interval '1 year' - interval '1 day', 'YYYY-MM-DD') from tb_agent where agent_id = agent_id) where agent_id in (46,47,62)tengo esto
column "expired_date" is of type date but expression is of type textregister_date es la columna de fecha y hora y expired_date es varchar
¿Algo está mal con mi código?
Gracias por adelantado.
to_char convierte la fecha en una cadena formateada. en su lugar, puede lanzarlo como una fecha.
pero la declaración de actualización también podría simplificarse a lo siguiente:
update tb_agent set expired_date = (register_date + interval '1 year' - interval '1 day')::date where agent_id in (46,47,62)