1

我正在尝试将 xls 电子表格导入表中,并且其中一列需要从同一表中的不同列派生。我想在导入阶段执行此操作,而不是在导入后创建一个 SQL 任务来执行此操作。在 SSIS 中创建表达式时我很糟糕,所以这可能是一项简单的任务——但我就是做错了。

DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,columndata)+1,0))

这就是我试图使用的表达方式。

4

1 回答 1

0

您需要以下内容:

DATEADD("S",-1,DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) )

1)您需要使用 " 来包围您的日期部分。

2)您需要将您的 0 日期转换为明确的日期类型。

此表达式采用列日期序列号 [dataDate] 将该天数添加到日期 -2

DATEADD("D",[dataDate],(DT_DATE)-2)

(显然 sql day 0 和 excel day 0 在我的版本(sql2008r2 和 excel 2007)上相差 2 天)并找到从日期 0 到该日期的月数,

DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))

然后将 1 添加到该月数并将其添加回日期 0

DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) 

(获取列日期值之后的下个月的开始),然后从日期中减去 1 秒以获取日期时间格式的列日期值的月份的最后一秒。

DATEADD("S",-1,DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) )
于 2012-07-27T21:30:23.333 回答