我的访问数据库中有表Customers
,我正尝试将其导入到SQL Server表中。
它一直抛出一个异常,即它无法导出MS Access日期列DOB
列。
所以我确实对该表运行了查询
select dob
from customers
where year(dob) < 1000
我得到了很多结果。但是当我检查MS Access表时
select dob
from customers
where isdate(dob) = false
这些记录不会显示。因此,函数ISDATE认为这些日期有效。
还有其他解决方法可从表Customers
中获取所有记录,这实际上将允许我将这些记录插入SQL Server表中?
注意:我不需要查询工具就能做到这一点。
答案 0 :(得分:0)
这很正常,因为ISDATE函数会查找数据类型(而不是value)并返回布尔结果。
我认为:在SQL Server上编辑小于1000的日期怎么办?
首先,将所有数据提供给sql db。 然后,只需将WHERE DATEFIELD <1000子句添加到末尾即可完成任何操作?
答案 1 :(得分:0)
实际上,我通过访问sql进行了快速.exe批量插入,并得到了详细的异常提示。
大容量复制错误:SqlDateTime溢出。必须在1/1/1753之间 12:00:00 AM和12/31/9999 11:59:59 PM。
所以解决方法非常简单,如您所见
select dob from customers where dob between #1/1/1753# and
#12/31/9999#
问题:
我会错过日期错误的记录。最后这不是什么大问题。
答案 2 :(得分:0)
解决方案1
使用一个公式为每个小于1000的日期记录增加9000
将所有信息反馈到数据库 在SQL Server上做任何你想做的事
解决方案2
更新您的exe代码: 在执行插入操作之前,请检查代码中的日期字段(如果其小于1000或smth),如果它大于该日期字段的话。