我有A
类型的可空列boolean
,其中大部分值为None
,其中一些为True
。我想将此列更改为timestamp
列,如果当前值不是None
,则将所有现有行更改为默认时间戳。
这可能吗?我能想到的唯一方法是创建一个中间列,其中包含新计算的值,更改A
的类型,从新列复制值,然后删除它。
有更简单的方法吗?
答案 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
列。