2012-10-10 3 views
0

내가 필요한 것은 작년의 현재 분기의 시작 날짜를 출력하는 데이터 항목 식입니다. 그 해로부터 1 년을 뺀 것과 같이 현재 연도를 찾는 것이 쉽습니다. 그러나 그 이상으로 저는 붙어 있습니다.Cognos 8의 날짜 산술

if (extract(month,current_date) in (10,12,12)) then ((extract(year,_add_years (current_date,-1))||'-10-01'))

는하지만, 아무리 내가 문자열로 연도와 날짜 concatonate 수없는 일을 내가 날짜 객체로 변환 할 수 있습니다

나는 현재와 같은 각 분기 못생긴 if 표현이있다. 나는이 오류가 cast()를 사용하여 문자로 정수를 캐스팅하려고

The operation "add" is invalid for the following combination of data types: "integer" and "character"

: 위의 코드는 오류를 제공합니다. 나는 또한 날짜에 문자 배열을 설정하려고이 오류를 얻을 : SQL Server 관련 기능을 사용하려고

The operation "condexp" is invalid for the following combination of data types: "character" and "integer"

그냥 나에게 그 기능이 지역에 대한 수 없다는 오류를 제공합니다 (그것은 SQL Server 데이터베이스입니다) 처리하므로 SS 날짜를 arithmatic으로 사용할 수 없으며 Cognos의 내장 날짜 함수에 특히 적용 할 수있는 것을 찾을 수 없습니다.

날짜를 알려진 요일/월 조합으로 추가하고이를 날짜 개체로 사용하려면 어떻게해야합니까?

답변

0

SQLSERVER 내장 함수는 Cognos에 존재합니다.

DATEADD({month},(3)*((DATEPART({quarter},[FullDateAlternateKey]))-1), 
DATEADD({YEAR}, DATEDIFF({YEAR}, 0, dateadd({year},-1,[FullDateAlternateKey])), 0)) 

FullDateAlternateKey 필드 (ADVERTUREWORKS DW DB에서) 내 날짜 필드 :
다음은 나를 위해 작동하는 표현이다.
여전히 문제가 있으면 새 간단한 목록 보고서에서이 식을 사용하여 문제를 격리하십시오.

3

저는 Cognos 10.1.1을 사용하고 있지만 작동 할 것입니다.

는 다음과 같은 코드를 사용하여 값을 얻을 수 있습니다 :

_make_timestamp(
    extract(year, _add_years(current_date, -1)), 
    (floor((extract(month,current_date)-1)/3)*3+1), 
    01 
) 

다음은 분기의 시작 월을 얻을 수있는 간단한 방법입니다.

(floor((extract(month,current_date)-1)/3)*3+1), 

이며 날짜 또는 문자열로 변환 할 수 있습니다.

cast(
    _make_timestamp(
    extract(year, _add_years(current_date, -1)), 
    (floor((extract(month,current_date)-1)/3)*3+1), 
    01 
), 
    date 
) 

,

cast(
    cast(
    _make_timestamp(
     extract(year, _add_years(current_date, -1)), 
     (floor((extract(month,current_date)-1)/3)*3+1), 
     01 
    ), 
    date), 
    varchar(10) 
) 

당신은 하루에 값을 얻을 때 플러스, 당신이 추출 기능을 사용할 수 있습니다.

extract(day, _first_of_month (current_date))