본문 바로가기

SQL - Mysql & Oracle/SQL 기본기 마스터

[빅쿼리] SQL에서 문자를 날짜 형태로 변환하는 법(parse_date 마스터)

반응형

실무자들이 일을 할 때 SQL 환경에서 문자로 정의된 날짜를 실제 Datetime 형태로 전처리해야 하는 경우가 많다. Bigquery와 Oracle에서 문자열 데이터를 전처리하는 방법에 대해서 자세하게 안내해보고자 한다. 

 

목차

1. Bigquery의 날짜변환 함수 소개

2. Bigquery parse_date 함수 활용법

 

Bigquery의 날짜변환 함수 소개

많은 경우 날짜 형식을 변환하려고 할 때, Could not cast literal "220801" to type TIMESTAMP 와 같은 에러가 뜨면서 전처리하는데 어려움을 겪을 것이다. 지금 전처리하고자 하는 문자열 데이터의 유형에 따라 어떻게 데이터를 처리할 수 있는지에 대해서 소개하는 것이 이번 포스팅의 핵심이다. 

 

 

Bigquery parse_date 함수 활용법

 

  • parse_date( 파싱 날짜 형식, Column )
    •  parse_date는 문자열을 날짜(date)로 변환해주는 빅쿼리 함수이다. 
    • 시간, 분, 초까지 변환하고 싶으면 parse_datetime(원하는 시간 형식, column)으로 동일하게 활용 가능
    • 여기서 핵심은 "원하는 날짜 형식"과 "Column" 간 변환 가능한 패턴이 정해져 있으니, 문법에 맞게 활용해야 한다는 것이다. 
      • column 영역은 실제 데이터가 입력되는 영역이고, 어떻게 문자열이 형성 되어있는지 패턴을 파악해야 한다.

      • 파싱 날짜 형식 영역은 Column 문자열을 어떻게 이해하면 될지 빅쿼리에 가이드를 주는 영역이라고 생각하면 된다. 
      • 그래서 parse_date의 논리를 풀어서 생각하면 아래와 같이 말을 하는 것이다. 
        : "column" 데이터를 변환하고 싶은데, "파싱 날짜 형식"의 규칙으로 데이터를 받아서, "YYYY-MM-DD"의 날짜 데이터로 값을 변환해줘

      • 이 사항을 모르면 극악의 Error 무한 굴레에서 벗어나지 못하니까 이번 포스팅을 잘 참고하길 바란다. 
문자열 형성 방식 입력해야 하는 명령어
"YYYYMMDD" '%Y%m%d'
"yymmdd" '%y%m%d'
"mm/dd/yy" '%x' 또는 '%m/%d/%y'
"MM/DD/YYYY" '%m/%d/%Y'
 
1
2
3
4
select parse_date('%Y%m%d','20220801') as type1
      , parse_date('%y%m%d','220801') as type2
      , parse_date('%x','08/01/22') as type3
      , parse_date('%m/%d/%Y','08/01/2022') as type4
cs

 

bigquery parse_date 문법
bigquery parse_date 문법

 

 

반응형