我正在尝试将xls电子表格导入到表中,其中一列需要从同一个表中的不同列派生。我想在导入阶段执行此操作,而不是在导入后创建SQL任务来执行此操作。在SSIS中创建表达式时我很可怕,所以这可能是一项简单的任务 - 但我无法做到这一点。
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,columndata)+1,0))
这是我试图使用的表达方式。
答案 0 :(得分:0)
您需要以下内容:
DATEADD("S",-1,DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) )
1)你需要使用“围绕你的日期部分。
2)您需要将0日期转换为显式日期类型。
此表达式采用dateserial数字[dataDate]列将该天数添加到日期-2
DATEADD("D",[dataDate],(DT_DATE)-2)
(显然sql第0天和excel第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) )