2015-11-18 2 views
0

Привет я получаю сообщение об ошибке, как ожидается, что-то вроде END ключевого слова между DATEDIFF и ( для ниже заявления подTeradata DATEDIFF Ошибка

select 
    case when CC.CASE_STS_CD in ('Closed', 'Auto Closed') then 
     DATEDIFF(second,CC.REC_DTTM_PST,CC.CRT_DTTM_PST) end as CASE_RES_DUR_IN_SECS, 

ответ

0

Если предположить, что ваши поля DATE тип данных (в противном случае вам придется бросить):

SELECT 
CASE WHEN 
    CC.CASE_STS_CD IN ('Closed','Auto Closed') THEN 
    (CC.REC_DTTM_PST - CC.CRT_DTTM_PST) * 86400 
END AS CASE_RES_DUR_IN_SECS 
0

Там нет DATEDIFF функции в Teradata

Это родовое SQL UDF я написал несколько лет назад. расчет разницы двух временных меток в секундах:

REPLACE FUNCTION TimeStamp_Diff_Seconds 
(
    ts1 TIMESTAMP(6) 
    ,ts2 TIMESTAMP(6) 
) 
RETURNS DECIMAL(18,6) 
LANGUAGE SQL 
CONTAINS SQL 
RETURNS NULL ON NULL INPUT 
DETERMINISTIC 
SQL SECURITY DEFINER 
COLLATION INVOKER 
INLINE TYPE 1 
RETURN 
(CAST((CAST(ts2 AS DATE)- CAST(ts1 AS DATE)) AS DECIMAL(18,6)) * 60*60*24) 
     + ((EXTRACT( HOUR FROM ts2) - EXTRACT( HOUR FROM ts1)) * 60*60) 
     + ((EXTRACT(MINUTE FROM ts2) - EXTRACT(MINUTE FROM ts1)) * 60) 
     + (EXTRACT(SECOND FROM ts2) - EXTRACT(SECOND FROM ts1)) 
;