SQL从Access导入数据-日期问题

时间:2018-11-17 14:18:27

标签: sql ms-access

我的访问数据库中有表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表中?

注意:我不需要查询工具就能做到这一点。

3 个答案:

答案 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),如果它大于该日期字段的话。