2017-09-21 3 views
0

소스가없는 java jar 파일/외부 라이브러리가 있습니다 ... jdbc를 통해 데이터베이스 엔진에 연결되며 생성되는 SQL 쿼리 중 일부는 ...TRUNC(date_column,'Q')..., ...TRUNC(date_column,'DD')...입니다. 및 ...TRUNC(date_column,'MM')...하지만 PostgreSQL의 DB Trunc() 방법은 그래서 PostgreSQL의 사용자 정의 함수가 있습니까PostgreSQL에서 사용되는 Oracle 용 Polyfills/Shim

매개 변수의 순서 또한 Trunc()date_trunc()

에 대한 변경 ... 숫자 데이터와 날짜가 date_trunc()입니다 절단하는 정확한 기능을 처리하는 기존 trunc() 함수를 오버로드하여 포맷터 'DD', 'MM', 'Q'등등 (other formatters reference) ...?

처음부터 새 함수를 작성하려고 할 수는 있지만 휠 재발송 ... 재사용 가능한 모든 polyfill SQL 팩/파일을 사용할 수 있습니까?

지금까지, 나는이 함께 왔어요 :

CREATE OR REPLACE FUNCTION trunc(dtval timestamp with time zone, formatter text) returns timestamp with time zone AS $body$ 
BEGIN 
RETURN date_trunc((CASE 
    WHEN formatter IN ('MI') THEN 'minute' 
    WHEN formatter IN ('HH','HH12','HH24') THEN 'hour' 
    WHEN formatter IN ('DAY','DY','D') THEN 'day' 
    WHEN formatter IN ('DDD','DD','J') THEN 'day' 
    WHEN formatter IN ('W') THEN 'week' 
    WHEN formatter IN ('IW') THEN 'week' 
    WHEN formatter IN ('WW') THEN 'week' 
    WHEN formatter IN ('MONTH','MON','MM','RM') THEN 'month' 
    WHEN formatter IN ('Q') THEN 'quarter' 
    WHEN formatter IN ('IYYY','IY','IY','I') THEN 'year' 
    WHEN formatter IN ('SYYYY','YYYY','YEAR','SYEAR','YYY','YY','Y') THEN 'year' 
    WHEN formatter IN ('CC','SCC') THEN 'year' 
ELSE 'day' 
END),dtval); 
END; 
$body$ 
LANGUAGE PLPGSQL 
SECURITY DEFINER 
STABLE; 

암 I을 옳은 길?

+1

https://github.com/orafce/orafce에서 보셨나요? – gsiems

+0

@gsiems, orafce는 유망 해 보입니다 ... 다른 사람들에게 도움이 될 수 있도록 결과를 게시 해 보겠습니다. –

+0

@gsiems, orafce가 내 작업의 대부분을 줄였습니다 ... 잘 작동합니다. ve 대답을 게시, 나는 정답으로 받아 들일 것입니다 ... –

답변

1

github.com/orafce/orafce에서 보셨나요?

+0

당신도 우분투 저장소에 하나를 포함시킬 수 있습니다 ...'sudo apt-get postgresql-9.3-orafce'를 설치하십시오 –

관련 문제