형변환에 대해 질문드립니다. 0 5 867

by 곤 [2019.04.04 11:06:39]


string으로 되어있는 date컬럼의 값을 string -> date형으로 변환하고 싶은게 최종 목적입니다.

dbms는 bigquery를 사용중이고 cast, convert를 이용해서 변환하려고 하는데 데이터 형태가 맞지않아서 변환이 안되고 있네요.

sample data

DATE
1-6-02
3-6-02
7-6-02
9-6-02

이렇게 구성되어 있는 string 데이터를 YYYY-MM-DD 형대의 DATE형으로 변환하고 싶습니다.

by 마농 [2019.04.04 11:17:14]

어떻게 변환해야 하나요?
연도인지, 월인지, 일인지 전혀 구별이 안가네요.
샘플도 너무 단순하네요. 다양한 예제가 필요합니다.
2자리와 1자리 월이나 일자가 공존하는 다양한 예제와
원본 대비 결과표를 제시해 주세요.


by 곤 [2019.04.04 11:29:12]
1-6-02
3-6-02
7-6-02
9-6-02

string형

->

2002-06-01
2002-06-03
2002-06-07
2002-06-09

date형

 

이렇게 변형하고 싶습니다!


by 곤 [2019.04.04 11:46:10]
year date
2002 1-6-02
2002 3-6-02
2002 7-6-02
2002 9-6-02
2002 13-2-02
2002 22-10-02
2002 1-11-02
2002 30-12-02
2002 3-10-02
2002 14-2-02

일은 1자리,2자리

월도 1자기, 2자리

년도는 2002년으로 고정되어 있습니다.

그리고 일,월에서 1자리의 경우 앞에 01,04 이런식으로 0이 없습니다.

year date
2002 2002-06-01
2002 2002-06-03
2002 2002-06-07
2002 2002-06-09
2002 2002-02-13
2002 2002-10-22
2002 2002-11-02
2002 2002-12-30
2002 2002-10-03
2002 2002-02-14

결과표입니다. 단순히 이렇게 변형만 하고 싶습니다ㅜ


by 마농 [2019.04.04 13:41:02]

오라클에서 테스트 했습니다.
기본적인 문자함수만을 사용했습니다.
 

WITH t AS
(
SELECT '2002' yyyy, '1-6-02' dt FROM dual
UNION ALL SELECT '2002', '3-6-02'   FROM dual
UNION ALL SELECT '2002', '7-6-02'   FROM dual
UNION ALL SELECT '2002', '9-6-02'   FROM dual
UNION ALL SELECT '2002', '13-2-02'  FROM dual
UNION ALL SELECT '2002', '22-10-02' FROM dual
UNION ALL SELECT '2002', '1-11-02'  FROM dual
UNION ALL SELECT '2002', '30-12-02' FROM dual
UNION ALL SELECT '2002', '3-10-02'  FROM dual
UNION ALL SELECT '2002', '14-2-02'  FROM dual
)
SELECT dt
     , CONCAT(CONCAT(CONCAT(CONCAT(CONCAT('20', yy), '-'), mm), '-'), dd) ymd
  FROM (SELECT dt
             , SUBSTR(dt, -2, 2) yy
             , LPAD(REPLACE(SUBSTR(dt, 3, LENGTH(dt)-5), '-', ''), 2, '0') mm
             , LPAD(REPLACE(SUBSTR(dt, 1, 2           ), '-', ''), 2, '0') dd
          FROM t
        ) a
;

 


by 곤 [2019.04.04 15:01:51]

감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입