SQL Server datetime類型轉換超出范圍的報錯


一個很基礎的插入語句:

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 ...時寫明列名是很有必要的,僅記與此。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM