【问题标题】:Convert a column that has a data type of integer into date in Cognos report studio在 Cognos Report Studio 中将数据类型为整数的列转换为日期
【发布时间】:2015-07-31 01:26:33
【问题描述】:

我有一列看起来像这样,数据类型是整数。我从 AS400 服务器获取数据,这就是它使用整数数据类型的原因。日期格式表示为 YYYYMMDD

在 Report Studio 中,我创建了一个数据项,可以将此整数列转换为日期时间。但是失败了。

我尝试了很多不同的方法,但都没有奏效。

cast([WCPDOD], 'YYYYMMDD')

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

cast([WCPDOD], YYYY-MM-DD)

演员([WCPDOD],日期时间)

cast_timestamp([WCPDOD], 日期时间)

cast_timestamp([WCPDOD], 日期)

cast_integer([WCPDOD], 日期)

有人可以帮我解决这个问题吗?我的目标是至少让这个 20150729 进入这个 07/29/2015

【问题讨论】:

    标签: sql-server datetime cognos-10 cognos-bi


    【解决方案1】:

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

    数据项2

    cast([Data Item1],varchar(10))
    

    接下来,使用 substring 提取日期组件并构建日期字符串:

    数据项3

    substring([Data Item2],1,4) + '-' + substring([Data Item2],5,2) + '-' + substring([Data Item2],7,2)
    

    最后,将生成的字符串转换为日期格式:

    数据项4

    cast([Data Item3],date)
    

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

    【讨论】:

      【解决方案2】:

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

      DECLARE @datevalue int = '20150729';
      
      SELECT convert(varchar(10),cast(cast(@datevalue AS varchar(10)) as date), 101);
      

      【讨论】:

      • 当我在 Cognos 报表工作室中应用它时它不起作用。位置之前或附近的解析错误:71 of: "convert(varchar(10),cast(cast([WCPDOD] AS varchar(10)) as date), 101);
      • 您需要在数据层(我假设是 SQL Server)中执行此操作,您在 Cognos 中提取数据。
      猜你喜欢
      • 1970-01-01
      • 2021-06-14
      • 2011-05-05
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      相关资源
      最近更新 更多