database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1534 게시물 읽기
No. 1534
DB2에서 날짜사이를 년월일로 표현하는 질문
작성자
손님
작성일
2008-02-26 21:03
조회수
11,084

create table D (
EMPNO varchar(4) not null,
ENAME varchar(10) not null,
HIREDATE DATE not null
);

insert into D (EMPNO,ENAME,HIREDATE) values ('7369','AAA',TO_DATE('1980-12-17','YYYY-MM-DD'));
insert into D (EMPNO,ENAME,HIREDATE) values ('7649','BBB',TO_DATE('1981-09-23','YYYY-MM-DD'));
commit;

 

 

/*날짜사이 년,월,일로 계산하기*/

SELECT empno
     , ename
     , hiredate
     , TRUNC (mb / 12) || '년' year#
     ,    TRUNC (MONTHS_BETWEEN (SYSDATE
                               , ADD_MONTHS (hiredate, 12 * TRUNC (mb / 12))
                                )
                )
       || '개월' month#
     , TRUNC (SYSDATE - ADD_MONTHS (hiredate, TRUNC (mb))) || '일' day#
  FROM (SELECT empno
             , ename
             , hiredate
             , MONTHS_BETWEEN (SYSDATE, hiredate) mb
          FROM D);

 

 

이렇게 오라클에선 표현을 할 수있는데

DB2에선 어떻게 할수 있나요..아무리 애를 써봐도 DB2초보자에겐 한계가 있네요..

이 글에 대한 댓글이 총 3건 있습니다.
SELECT  SUBSTR(GAB,1,4) YY
       ,SUBSTR(GAB,5,2) MM
       ,SUBSTR(GAB,7,2) DD
       ,DAT
  FROM (
    SELECT  DIGITS(DATE('2007-01-01') - DATE('2009-08-15')) GAB --간격
           ,DATE('2007-01-01') + 2 YEAR + 7 MONTH + 14 DAY  DAT -- 날짜연산
      FROM  SYSIBM.SYSDUMMY1 ) DM
박진복(pjb708)님이 2008-02-27 08:15에 작성한 댓글입니다.
이 댓글은 2008-02-27 08:50에 마지막으로 수정되었습니다.

며칠동안 끙끙댓었는데..

도움이 많이 되었습니다

정말 감사합니다.

손님님이 2008-02-27 09:37에 작성한 댓글입니다. Edit

SELECT empno ,
       ename ,
       hiredate ,
       rtrim(char(t_year)) || '년' year# ,
       rtrim(char(t_month - (t_year*12))) || '개월' month# ,
       rtrim(char(( t_day - ((t_year*365) + ((t_month - (t_year*12))*30))))) || '일' day#
FROM (SELECT empno ,
             ename ,
    hiredate ,
    timestampdiff(256,char(current timestamp - hiredate)) t_year ,
    timestampdiff(64,char(current timestamp - hiredate)) t_month ,
    timestampdiff(16,char(current timestamp - hiredate)) t_day
FROM D);


function - timestampdiff(<n>,char(timestamp calculation value))

<n> 값에 따라 다음 형식으로 환산 :
1 = 초의 소수부분
2 = 초
4 = 분
8 = 시간
16 = 요일
32 = 주
64 = 달
128 = 분기
256 = 년

????님이 2008-02-27 10:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1538SQL질문입니다 [1]
손님
2008-02-27
9083
1537DB2 Express-C 8.2 구합니다 [3]
현순신
2008-02-27
8411
1536함수 안에 프로시저 . [1]
Ehdl
2008-02-27
9558
1534DB2에서 날짜사이를 년월일로 표현하는 질문 [3]
손님
2008-02-26
11084
1533이거 db2맞아요? [3]
지창용
2008-02-26
8737
1531db2 쿼리로 누계내기 [1]
지창용
2008-02-25
9271
1530다른 데이타베이스에 테이블 조회 [1]
조댕이
2008-02-22
9215
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.055초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다