日期:2014-05-17  浏览次数:20552 次

关于datetime转smalldatetime的问题
有两个库A和B,现需将A库中的表Table_1的数据导入到B库中的表Table_2中,在Table_1中有一个字段是datetime类型的,要将该字段导给Table_2中的一个smalldatetime字段中,现导入报错,估计应该是长度的问题,在网上没找到解决办法,求大神指导

------解决方案--------------------
SQL code
select convert(smalldatetime,col) from table_1 --转换一下看看是否成功?

------解决方案--------------------
SQL code
datetime 是 1753-1-1 到 9999-12-31 
smailldatetime 是1900-01-01 到 2079-06-06

你试试下面的语句,看有超出范围的没有
超出了你要么删掉,要吗把smailldatetime 改成datetime
这个你看着弄

select 日期字段 from A..Table_1 where 日期字段<'1900-01-01'
or 日期字段>'2079-06-06'

------解决方案--------------------
smalldatetime:从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据精确到分钟。
datetime:从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。

你把Table_1中不屬於smalldatetime的數據排除在外不執行導入就可以了,或直接更新時間為null,然後重新執行導入


------解决方案--------------------
一般这种导入选择最大范围的作为标准,由于绝大多数应用都不需要处理1753年之前的数据,所以你可以放心把datetime转为smalldatetime然后再存到表2中。并且也不会影响数据的精确性。
插入时转换一下表一的日期格式就可以了:convert(smalldatetime,列)