5

I have a table with a float column. All values in this column for all records are NULL. I want to change the data type to datetime.

I executed the query:

ALTER TABLE MyTable ALTER Column MyColumn DATETIME NULL

It works. But when I try to revert the changes by setting the data type to float:

ALTER TABLE MyTable ALTER Column MyColumn FLOAT NULL

I get the exception:

Implicit conversion from data type datetime to float is not allowed. Use the CONVERT function to run this query.

Note that column MyColumn is null for all records.

Paul White
95.4k30 gold badges439 silver badges689 bronze badges
asked Aug 21, 2013 at 5:38

1 Answer 1

8

With no data in the column you can just drop it and add it again.

alter table MyTable drop column MyColumn;
go
alter table MyTable add MyColumn float;

If you have data in your column and it makes sense to convert the values to a float value you can rename the column, add a new column, move the data using convert and then drop the old column.

exec sp_rename 'MyTable.MyColumn', 'Temp_MyColumn', 'COLUMN';
go
alter table MyTable add MyColumn float;
go
update MyTable 
set MyColumn = convert(float, Temp_MyColumn) 
where Temp_MyColumn is not null;
go
alter table MyTable drop column Temp_MyColumn;
answered Aug 21, 2013 at 6:00
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.