안녕하세요.
인포믹스에서는 날짜시간과 관련하여 3가지의 자료형을 제공합니다.
일반적을 생각하실 수 있는 date형과 datetime형
그리고 interval형을 제공합니다.
date형 : 년월일
datetime형 : 년에서 1/100000초까지 사용자가 지정하는 구간
interval형 : 기간
이들간의 관계는 다음과 같습니다.
date - date = interval
datetime - datetime = interval
date형에서 datetime형을 빼면 date형이 datetime형으로 형변환
된 후 계산이 됩니다.
이제 현재 시간보다 5분전을 구하기 위해서는
현재시간 - 5분의 기간 = 5분전 시간
즉
CURRENT year to second - 5 units minute
= 오분전 시간(datetime year to second 형)
이 되겠죠. 5일전의 날짜를 구하는 것은
TODAY - 5 units day = 5일전 날짜(date형)
CURRENT year to day - 5 units day = 5일전 날짜(datetime year to day형)
그럼 좀더 복잡하게 5시간 50분을 빼보면
CURRENT year to second - interval (5:50) hour to minute
= 현재 시간에서 5시간 50분을 뺀 년월일 시분초(datetime year to second형)
위의 예에서 알 수 있듯이 단일 unit의 interval은
# units year|month|day|hour|minute|second|fraction
단일 unit이 아닐 경우에는
interval (...) ? to ?
형태로 사용합니다. 하지만 기간을 정할 수 없는 경우가 있는 데
한달의 길이가 월에 따라서 다르기 때문에 interval로는
1. year ~ month 사이
2. day ~ fraction 사이
의 두가지 형태로만 가능합니다. 즉
interval (2-10) month to day
는 사용할 수 없습니다. 정확히 몇일인지 구분이 되지 않기 때문이죠.
자세한 문법은 Guide to Syntax의
Segments -> Interval이라는 글자가 들어간 문단을 참조하시고
다음으로 대여일수를 계산하는 것을 보도록 하죠.
TODAY - 대여일(date형) = 대여일수(interval 형)
select *, TODAY - 대여일 from 대여장부 ....;
여기서 반환되는 대여일수의 자료형은 interval형입니다. 이것은 인포믹스에만
존재하는 자료형으로 asp등에서는 오류가 나거나 표기가 되지 않습니다.
이경우 IDS 버전이 9.x일 경우 형변환(casting)을 하여 사용합니다.
select *, (TODAY - 대여일)::varchar(10) from 대여장부 ...;
또는 숫자형으로 받기를 원할 경우
select *, (TODAY - 대여일)::varchar(10)::integer from 대여장부 ...;
형태로 사용합니다.
흠~ 설명이 충분할지 모르겠군요.
그럼 수고하세요.
::김연우 님께서 쓰시길::
> 안녕하세요
> 인포믹스를 처음 사용하는 초보입니다.
>
> 혹시 여기에 날짜 연산에 대한 것 있나요?
> 예를 들어서 현재시간 보다 5분전 시간을 구하는 것은 어떻게 하나요?
>
> 궁금합니다..
>
> 도와주세용..
>
> 그럼..
|