Posted on 2008-08-28 11:34
Qzi 閱讀(1690)
評(píng)論(0) 編輯 收藏 所屬分類:
SQL
“從 char 數(shù)據(jù)類型到 datetime 數(shù)據(jù)類型的轉(zhuǎn)換導(dǎo)致 datetime 值越界”
錯(cuò)誤的注意羅,下面是SQL Server下兩種變量的詳細(xì)介紹,時(shí)間值越界的明顯就會(huì)報(bào)這個(gè)錯(cuò)誤
datetime和smalldatetime
代表日期和一天內(nèi)的時(shí)間的日期和時(shí)間數(shù)據(jù)類型。
datetime
從1753年1月1日到9999年12月31日的日期和時(shí)間數(shù)據(jù),精確度為百分之三秒。如下表所示,把值調(diào)整到.000、.003、或.007秒的增量。(曾經(jīng)試過使用1752有錯(cuò),1753就沒有錯(cuò)了,郁悶啊!)
microsoft®sqlserver™拒絕所有其不能識(shí)別為1753年到9999年間的日期的值。
smalldatetime
從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù)精確到分鐘。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用兩個(gè)4字節(jié)的整數(shù)內(nèi)部存儲(chǔ)datetime數(shù)據(jù)類型的值。第一個(gè)4字節(jié)存儲(chǔ)basedate之前或之后的天數(shù)。基礎(chǔ)日期是系統(tǒng)參考日期。不允許早于1753年1月1日的datetime值。另外一個(gè)4字節(jié)存儲(chǔ)以午夜后毫秒數(shù)所代表的每天的時(shí)間。
smalldatetime數(shù)據(jù)類型存儲(chǔ)日期和每天的時(shí)間,但精確度低于datetime。sqlserver將smalldatetime的值存儲(chǔ)為兩個(gè)2字節(jié)的整數(shù)。第一個(gè)2字節(jié)存儲(chǔ)1900年1月1日后的天數(shù)。另外一個(gè)2字節(jié)存儲(chǔ)午夜后的分鐘數(shù)。日期范圍從1900年1月1日到2079年6月6日,精確到分鐘。