我想要多个条件更新多行。
这是我的测试结果的选择查询。
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)
它可以显示我期望的结果,
但是当我使用此代码进行多次更新时
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)
我得到了这个
column "expired_date" is of type date but expression is of type text
register_date是日期时间列,expired_date是varchar
我的代码有问题吗?
提前谢谢。
答案 0 :(得分:1)
to_char
将日期转换为格式化字符串。你可以把它作为日期投射。
但更新声明也可简化为以下内容:
update tb_agent
set expired_date = (register_date + interval '1 year' - interval '1 day')::date
where agent_id in (46,47,62)