在SSIS中使用DATEADD进行列变换

时间:2014-11-09 15:35:45

标签: sql-server ssis sas

我试图在派生列转换中使用DATEADD函数,但似乎我使用的表达式是错误的。最初,我在我的SQL查询中使用它,它工作正常,但我现在想在派生列中使用它,所以我可以在将它带入我的表之前转换日期值。这是我正在使用的sql:

select DATEADD(day,myDate,'19600101') as NewDate from myTable

但我现在想在派生列中使用它,所以我要替换列并在表达式中使用它:

DATEADD("day", myDate, "19600101" ) 

2 个答案:

答案 0 :(得分:0)

请参阅dateadd的文档:http://msdn.microsoft.com/en-us/library/ms141719.aspx。我不确定你在尝试用这个表达式做什么。如果你想加一天,那就是:

select DATEADD(d,1,myDate) as NewDate from myTable

如果你想减去一天,那就是:

select DATEADD(d,-1,myDate) as NewDate from myTable

请解释您要做的事情。我不认为第一个论点应该在双引号内。也是" day"根据我的链接中的备注部分不允许。

答案 1 :(得分:0)

我遇到了同样的问题,这是修复:

而不是:

DATEADD("day", myDate, "19600101" ) 

尝试:

DATEADD("day", (DT_DBDATE)myDate, (DT_DBDATE)"19600101")

这将返回一个数据库日期戳,如果需要,可以将其强制转换为字符串。在我的情况下,我从大纪元时间(自1970年1月1日以来的毫秒)转换,所以我需要这个:

DATEADD("s",(DT_I8)[Index Time],(DT_DBTIME)"1/1/1970")