连接到目前为止的int并在ssis中插入到DB

时间:2016-09-21 11:44:17

标签: sql date casting ssis

我是SSIS的新手,并且在使用ssis向我的表中插入日期时出现问题。 这就是我想要做的事情:

select cast (cast(YEAR(getdate()) as nvarchar) + '-' + cast(@IndexmonthS as nvarchar) + '-' + cast(@day as nvarchar) as date)  as startdate,
       cast (cast(YEAR(getdate()) as nvarchar) + '-' + cast(@IndexmonthE as nvarchar) + '-' + cast(@day as nvarchar) as date)  as enddate

当我将它复制到ssis中的推荐文本并运行包时出现错误 -

  

“插入到...时出错无法在类型”DT_DBDATE“之间进行转换   “DT_14” ...“

目标表有一列,其类型是日期。 请帮忙。

1 个答案:

答案 0 :(得分:0)

首先,如果没有长度参数,请不要使用varchar()nvarchar()。在SQL Server中,默认长度因上下文而异,只是一个等待发生的错误。

在SQL Server 2012中,您可以使用datefromparts()。假设值是数值:

select datefromparts(year(getdate()), @IndexmonthS, @day) as startdate,

即使在早期版本中,您也应该使用datename()而不是datepart()

select cast(datename(year, getdate()) + '-' + cast(@IndexmonthS as varchar(255)) + '-' cast(@day as varchar(255)) as date)