我正在使用ADO.NET源将数据从ODBC服务器传送到我的SQL。 我使用导入和导出向导来创建我的数据流任务。
我需要添加包含字段GPMTADDT>的新记录(昨天日期) 例如,如果今天20121002,以下查询完美地运行:
SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > 20121001
我试过了:
SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > Format(now(),"yyyymmdd")
但它不起作用,服务器将“格式”视为列。
我尝试创建变量@date
SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > @date
服务器再次拒绝了“@”。
Also tried:
SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > (SELECT MAX PARTICIP.GPMTADDT FROM PARTICIP)
我确信我遗漏了一些简单的东西,非常感谢帮助。
谢谢!
答案 0 :(得分:1)
你试过了吗?
SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > DATEADD(dd, -1, GETDATE())
答案 1 :(得分:0)
您尚未提及数据源的实际内容,但您尝试过的SQL语法中似乎存在多个错误。例如第一个查询应该在日期周围有单引号,最后一个应该将参数放在括号中的MAX()
等。
但是,为了尝试回答您的基本问题,ADO.NET源代码不支持参数,与OLE DB不同。一些可能的解决方案是:
SqlCommand
属性以及SSIS变量(如所述here)SELECT
查询,将其分配给SSIS变量,然后将该变量用作SqlCommand
值就我个人而言,如果无法从源系统中访问变量,那么选项1是最简单的,但当然并不总是可行。 2和3是相同解决方案的变体,但我更喜欢3,因为我发现编写脚本比使用表达式更容易。