文章出處
文章列表
一個很基礎的插入語句:
insert into table1
select col1,convert(datetime,col2),convert(datetime,col3),col4,col5 from table2
其中table1表中col2,col3是datetime類型,其他都是varchar類型,table2全部是varchar類型。
table2表中全部是varchar類型,col 1 4 5都有可能是空值。
在執行時報出如下錯誤:
消息 242,級別 16,狀態 3,第 1 行
從 varchar 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值。
語句已終止。
由于datetime類型的只涉及到了col 2 3兩列,因此檢查了好長時間這兩列的數據是否規范,但是最后發現并不是不規范數據的問題。
插入語句寫成:
insert into table1(col1,col2,col3,col4,col5)
select col1,convert(datetime,col2),convert(datetime,col3),col4,col5 from table2
則不會報錯,應該是未能寫明列名,導致匹配時其他列的值匹配到datetime列導致,因此sqlserver insert into ... select ...時寫明列名是很有必要的,僅記與此。
文章列表
全站熱搜