BigQuery 에서 TO_CHAR 사용해서 date 로부터 YYYY-MM 추출하기

BigQuery 를 사용하다보면, Oracle 이나 타 SQL 에 비교해서 가장 짜증나는 부분이
BigQuery 에서는 TO_CHAR 함수가 없다는 것이다.

즉, 특정 date 속성에서 ‘YYYY-MM’ string 을 추출하고자 한다면

Oracle 에서는

--Oracle SQL
SELECT TO_CHAR(<date>, 'YYYY-MM') AS <colname>

위와 같이 간결한 쿼리문이 BigQuery 에서는

--BigQuery
SELECT CONCAT(CAST(FORMAT_DATE("%E4Y", CAST(<date> as date)) AS string),'-',CAST(FORMAT_DATE("%m", CAST(<date> as date)) AS string)) AS <colname>

위와 같이 매우 번거롭게 쿼리를 작성해야 한다.

Oracle RR vs YY (DATE 함수)

1. TO_DATE(’00’,’RR’) — 2000

2. TO_DATE(’00’,’YY’) — 2000

3. TO_DATE(’49’,’RR’) — 2049

4. TO_DATE(’49’,’YY’) — 2049

5. TO_DATE(’50’,’RR’) — 1950

6. TO_DATE(’50’,’YY’) — 2050

7. TO_DATE(’99’,’RR’) — 1999

8. TO_DATE(’99’,’YY’) — 2099

 

정리1. 00~49 에서는 RR, YY 상관 없이 20XX 반환
정리2. 50~99 에서는 RR은 19XX, YY는 20XX 반환

 

출처: https://community.oracle.com/thread/974281