2012-10-26 2 views
3

MySql의 tumestampdiff 함수와 동일한 기능을하는 내 자신의 timestampdiff (DAY, first_date, second_date) 함수를 작성하려고했습니다.오라클에 대한 timestampdiff 함수를 작성하는 방법

하지만 첫 번째 인수의 데이터 형식이 무엇인지 알 수 없으므로 하루, 월 또는 연도의 주요 작업 단어를 받아 들일 수 있습니다.

함수 인수에서 어떤 종류의 데이터 형식으로 전문가의 의견이 필요합니까?

두 번째로 mysql inbuilt 함수 구현을 볼 수 있습니다. 더 명확하게 추가하려면 확인

:

나는 내가 오라클과 MySQL을 모두 실행해야 쿼리 위에 원하는 쿼리 select * from application a where timestampdiff(DAY,a.created_date, CURRENT_TIMESTAMP(3)) >= 30;

있습니다.

희망이 있습니다. 나는 오라클에서 같은 기능을 쓰려고 생각했기 때문에 코드를 변경할 필요가 없으며 두 데이터베이스에서 모두 지원 될 것입니다.

이제 위에서 첫 번째 매개 변수 유형이되어야하는 함수를 작성하려고합니다.

감사

난 당신이 오라클이 이미 가지고 있기 때문에 자신의 timestampdiff 함수를 작성할 필요가 있다고 생각하지 않는다
+1

당신은 두 개의 타임 스탬프를 직접 뺄 수 있다는 것을 알고있다? 예 :'first_date - second_date'? 데이터 유형에 따라'INTERVAL' (둘 다'TIMESTAMP's 일 경우) 또는'NUMBER' (둘 다'DATE' 일 경우)가 제공됩니다. –

+0

@a_horse_with_no_name, 실제로 두 날짜를 뺀 것이 a "정기적 인"숫자 데이터 형식 - http://stackoverflow.com/a/9346340/1083652 (그냥 쪽지로) –

+0

@ABCade : 재미있는 독서 감사합니다.하지만 누군가가 그냥 결과를 사용하여 여전히 정수입니다 (예를 들어, JDBC 드라이버는 NUMBER 데이터 유형의 열을 반환합니다. –

답변

0

: 다음 어떤 이유로, 당신이하고 싶지 않는 경우 EXTRACT

EXTRACT(DAY from (first_date - second_date)) 

을, 나는 "datefield"키워드 (YEAR, MONTH, DAY 등)에 대해 datatype이 있다고 생각하지 않습니다.
하지만 유한 집합이기 때문에, 당신은 단지 VARCHAR2를 얻을 코드에서 일부 if 문을 가질 수 ...

+0

이유는 동일한 함수가 데이터베이스 mysql에서 모두 실행되어야합니다. 오라클. 대안 솔루션을 알고 있습니다. 대안 솔루션을 찾고 그냥 원하는 경우 첫 번째 형식의 형식이어야합니다 timestampdiff 쓸 싶어. –

+0

@ ZunedAhmed, 알 겠어.이 할 수 있는지 잘 모르겠습니다. (그리고 ch 수 없다 지금 이것은 eck)하지만 아마도'DAY','MONTH' 등을위한 전역 변수를 가진 패키지를 만들 수 있습니다 - 숫자 일 수 있습니다. 그런 다음 글로벌 변수 MONTH에 대한 일일 글로벌 변수를위한 동의어 DAY를 만듭니다. 에. 함수에서 첫 번째 매개 변수는 숫자이고 동의어 중 하나를 보냅니다. –

관련 문제