首页 > 解决方案 > 连接到 KISAM ODBC 数据库的 SSIS 数据流包无法导出昨天的更改

问题描述

我有一个现有的 SSIS 包,它在使用 KODBC 32 位驱动程序和以下数据流中的 SQL 命令从 KISAM 数据库中的选定表中导出所有行之前截断 SQL Server 数据库表:

select * from table_a
select * from table_b
etc

对于最大的表,这是超过 330 万行和 100 多列。但是在任何一天只有不到 5,000 行会发生变化。

由于业务需求,我只能在凌晨 1 点到凌晨 4 点之间运行包。我有一个工作测试包,它使用以下命令返回预期的 5,000 行:

Select * from table_a where table_a.date_column1=curdate()

这给了我今天更改的行,但我需要能够返回昨天更改的行。

我试过了:

Select * from table_a where table_a.date_column1=(curdate(), INTERVAL -1, DAY)

,但出现语法错误,因为我认为这可能是 MySQL 或其他 ODBC 语法。

昨天为 Kerridge/Kisam ODBC 获取的正确语法是什么?

标签: ssisodbc

解决方案


使用该DATE_ADD()函数将时间/日期间隔添加到日期,然后返回日期:

 SELECT * FROM table_a WHERE table_a.date_column1=DATE_ADD(CURDATE(), INTERVAL -1 DAY)

推荐阅读