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

时间:2015-07-29 20:29:20

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

我有一个如下所示的列,数据类型是整数。我从AS400服务器获取数据,这就是它使用整数数据类型的原因。日期格式表示为YYYYMMDD

enter image description here

enter image description here

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

enter image description here

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

施放([WCPDOD],'YYYYMMDD')

施放([WCPDOD],日期) UDA-SQL-0219函数“to_date”用于本地处理但是 不能作为内置函数使用,或者至少不支持其中一个参数.RSV-SRV-0042

施放([WCPDOD],YYYY-MM-DD)

施放([WCPDOD],日期时间)

cast_timestamp([WCPDOD],datetime)

cast_timestamp([WCPDOD],日期)

cast_integer([WCPDOD],日期)

有人可以帮我吗?我的目标是让这个20150729至少在2015年7月29日进入

2 个答案:

答案 0 :(得分:3)

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

数据项2

<% flash.each do |name, msg| %>
  <%= content_tag(:div, msg, class: "alert alert-#{name}") %>
<% end %>

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

数据项3

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

最后,将结果字符串转换为日期格式:

数据项4

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

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

答案 1 :(得分:1)

在SQL Server中,您可以将整数字段转换为varchar,然后转换为日期,然后使用日期样式DECLARE @datevalue int = '20150729'; SELECT convert(varchar(10),cast(cast(@datevalue AS varchar(10)) as date), 101); 来实现所需的格式:

sealed trait Base
case class A(v:Int) extends Base
object N extends Base

object Main {
  // Wanna one monoid for all the Base's
  implicit val baseMonoid = new Monoid[Base] {
    override def append(f1: Base, f2: => Base): Base = f1 match {
      case A(x) => f2 match {
        case A(y) => A(x + y)
        case N => A(x)
      }
      case N => f2
    }
    override def zero = N
  }

  def main(args: Array[String]): Unit = {
    println(∅[Base] |+| A(3) |+| A(2)) // Compiles
    println(A(3) |+| A(2)) // Not compiles
  }
}