根据现有数据更改列类型和设置值

时间:2016-12-21 19:14:03

标签: mysql sql

我有A类型的可空列boolean,其中大部分值为None,其中一些为True。我想将此列更改为timestamp列,如果当前值不是None,则将所有现有行更改为默认时间戳。

这可能吗?我能想到的唯一方法是创建一个中间列,其中包含新计算的值,更改A的类型,从新列复制值,然后删除它。

有更简单的方法吗?

3 个答案:

答案 0 :(得分:2)

是的,因为所有人都提到不可能改变列的类型。 您可以添加新的日期时间列。

Update tablename set newcolumn = value where oldcolumn = true;
Update tablename set newcolumn = value where oldcolumn = none;

稍后您可以删除旧列。这是伪代码。

答案 1 :(得分:1)

  

这可能吗?

不,导致您的列数据类型目前为.grid:after { content: ''; display: block; clear: both; } .grid-item, .grid-sizer { width: 100%; } .grid-item { float: left; height: 350px; margin-bottom: 4px; margin-right: -1px; // Fix for grid breaking on resize } ,因此如果您甚至使用boolean语句并将类型更改为ALTER ...您认为如何更改现有的行值TIMESTAMP?因为它不可转换为TRUE数据类型。

我看到的唯一方法是创建一个包含timestamp数据类型的新列,更新表并填充该列,然后删除现有列TIMESTAMP

答案 2 :(得分:0)

如果列中存在bool数据,则无法强制boolean列到Datetime列。我认为唯一可行的方法是创建一个包含datetime列的临时列,使用bool列更新该列,然后删除该bool列。