產生這個錯誤的原因是在使用convert函數將給定的日期字符串轉換為日期類型的時候,因為datetime這個數據類型有時間數值的范圍限定,當超出時間范圍時就拋出這個錯誤。
如果類型是【datetime】數據類型:最大是9999年12 月31日,最小是1753年1月1日。
如果類型是【smalldatetime】數據類型:最大值是2079年6月6日,最小值是1900年1月1日。
更多的,如果給定的日期字符串是一個錯誤的日期,也會報出這個錯誤,比如說:
select convert(datetime, '2018-11-31', 20); -- 報錯
看出問題來了嘛?11月份怎么會有31天呢,因為31天超出了11月份30天的范圍,因此就會報這個【從varchar數據類型到datetime數據類型的轉換產生一個超出范圍的值】的錯誤。
我遇過現場客戶給出【2015-09-38】的數據,排查半天才發現這個問題,真是讓人頭大。
"你現在多學一樣本事,就能在以后少說一句求人的話。"