Sql server 在Cognos report studio中将数据类型为整数的列转换为日期

Sql server 在Cognos report studio中将数据类型为整数的列转换为日期,sql-server,datetime,cognos-10,cognos-bi,Sql Server,Datetime,Cognos 10,Cognos Bi,我有一个这样的列,数据类型是integer。我从AS400服务器获取数据,这就是为什么它使用整数数据类型。日期格式表示为YYYYMMDD 在ReportStudio中,我创建了一个数据项,将此整数列转换为日期时间。但它失败了 我尝试过很多不同的方法,但都不奏效 强制转换([WCPDOD],'yyyyymmdd') 演员阵容([WCPDOD],日期) UDA-SQL-0219函数“截止日期”用于本地处理,但 作为内置函数不可用,或者至少一个参数不受支持。RSV-SRV-0042 铸造([WC

我有一个这样的列,数据类型是integer。我从AS400服务器获取数据,这就是为什么它使用整数数据类型。日期格式表示为YYYYMMDD

在ReportStudio中,我创建了一个数据项,将此整数列转换为日期时间。但它失败了

我尝试过很多不同的方法,但都不奏效

强制转换([WCPDOD],'yyyyymmdd')

演员阵容([WCPDOD],日期) UDA-SQL-0219函数“截止日期”用于本地处理,但 作为内置函数不可用,或者至少一个参数不受支持。RSV-SRV-0042

铸造([WCPDOD],YYYY-MM-DD)

强制转换([WCPDOD],日期时间)

cast_时间戳([WCPDOD],datetime)

cast_时间戳([WCPDOD],日期)

强制转换整数([WCPDOD],日期)


有人能帮我吗?我的目标是至少将20150729转换成2015年7月29日的版本。在SQL Server中,您可以将整数字段转换为varchar,然后转换为日期,然后使用日期样式
101
,以实现所需的格式:

DECLARE @datevalue int = '20150729';

SELECT convert(varchar(10),cast(cast(@datevalue AS varchar(10)) as date), 101);

在SQL Server中,您可以将整数字段转换为varchar,然后再转换为日期,然后使用日期样式
101
,以实现所需的格式:

DECLARE @datevalue int = '20150729';

SELECT convert(varchar(10),cast(cast(@datevalue AS varchar(10)) as date), 101);

首先,将10位整数转换为字符串:

数据项2

cast([Data Item1],varchar(10))
接下来,使用子字符串提取日期组件并构建日期字符串:

数据项3

substring([Data Item2],1,4) + '-' + substring([Data Item2],5,2) + '-' + substring([Data Item2],7,2)
最后,将结果字符串转换为日期格式:

数据项4

cast([Data Item3],date)

当然,这一切都可以在一个表达式中完成,但为了清晰起见,我在这里将其分解。

首先,将10位整数转换为字符串:

数据项2

cast([Data Item1],varchar(10))
接下来,使用子字符串提取日期组件并构建日期字符串:

数据项3

substring([Data Item2],1,4) + '-' + substring([Data Item2],5,2) + '-' + substring([Data Item2],7,2)
最后,将结果字符串转换为日期格式:

数据项4

cast([Data Item3],date)

当然,这一切都可以在一个表达式中完成,但为了清晰起见,我在这里将其打断。

当我在Cognos report studio中应用此表达式时,它不起作用。分析位置之前或附近的错误:71 of:“convert(varchar(10),cast(cast([WCPDOD]AS varchar(10))AS date),101);您需要在数据层(我假设是SQL Server)中执行此操作,在Cognos中提取数据。当我在Cognos report studio中应用此操作时,此操作不起作用。分析位置之前或附近的错误:71 of:“convert(varchar(10)”,cast(cast([WCPDOD]作为varchar(10))作为日期),101);您将需要在数据层(我假设是SQL Server)中执行此操作,在该层中,您将在Cognos中提取数据。