在Postgres / Rails的日期字段中将00替换为20年

时间:2017-04-10 15:07:47

标签: postgresql

我有很多日期,其中年份是0015而不是2015年或0016而不是2016年等等......

我可能会在ruby中编写一个脚本来处理它,但是有很多条目,我认为脚本需要很长时间。

我有什么方法可以在SQL中执行此操作吗?

如果我只能逐年完成,我愿意17次运行该脚本来完成所有的2000年。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

假设这些是日期或时间戳字段,您应该能够将其作为简单的UPDATE查询。

首先,我们可以找到所有受影响的日期:

SELECT * FROM my_table WHERE my_column < '0020-01-01';

假设这会返回正确的行,我们可以在每个受影响的日期添加2000年:

SELECT my_column as old_value, my_column + interval '2000 years'
FROM my_table WHERE my_column < '0020-01-01';

假设这一切看起来都正确,请将其应用于表格:

UPDATE my_table
SET my_column = my_column + interval '2000 years'
WHERE my_column < '0020-01-01';