Posted on 2008-08-28 11:34
Qzi 閱讀(1690)
評論(0) 編輯 收藏 所屬分類:
SQL
“從 char 數據類型到 datetime 數據類型的轉換導致 datetime 值越界”
錯誤的注意羅,下面是SQL Server下兩種變量的詳細介紹,時間值越界的明顯就會報這個錯誤
datetime和smalldatetime
代表日期和一天內的時間的日期和時間數據類型。
datetime
從1753年1月1日到9999年12月31日的日期和時間數據,精確度為百分之三秒。如下表所示,把值調整到.000、.003、或.007秒的增量。(曾經試過使用1752有錯,1753就沒有錯了,郁悶啊!)
microsoft®sqlserver™拒絕所有其不能識別為1753年到9999年間的日期的值。
smalldatetime
從1900年1月1日到2079年6月6日的日期和時間數據精確到分鐘。29.998秒或更低的smalldatetime值向下舍入為最接近的分鐘,29.999秒或更高的smalldatetime值向上舍入為最接近的分鐘。
--returnstimeas12:35
selectcast(2000-05-0812:35:29.998assmalldatetime)
go
--returnstimeas12:36
selectcast(2000-05-0812:35:29.999assmalldatetime)
go
注釋
microsoftsqlserver用兩個4字節的整數內部存儲datetime數據類型的值。第一個4字節存儲basedate之前或之后的天數。基礎日期是系統參考日期。不允許早于1753年1月1日的datetime值。另外一個4字節存儲以午夜后毫秒數所代表的每天的時間。
smalldatetime數據類型存儲日期和每天的時間,但精確度低于datetime。sqlserver將smalldatetime的值存儲為兩個2字節的整數。第一個2字節存儲1900年1月1日后的天數。另外一個2字節存儲午夜后的分鐘數。日期范圍從1900年1月1日到2079年6月6日,精確到分鐘。