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 SQL #02 주중/주말 (CASE)

1. 단순 CASE

SELECT 컬럼1
CASE WHEN TRIM(TO_CHAR(컬럼2,’DAY’))
IN (‘토요일’,’일요일’)
THEN ‘주말’
ELSE ‘주중’ END “주중/주말
FROM 테이블;

 

2. 검색 CASE

SELECT 컬럼1
CASE WHEN TO_CHAR(컬럼2,’DAY’)
BETWEEN ‘토요일’ AND ‘일요일’
THEN ‘주말’
ELSE ‘주중’ END “주중/주말
FROM 테이블;