CAST 함수CAST(value AS datatype)cf) SAFE_CAST: 더 안전히 변환SAFE_CAST(value AS datatype)CONCAT: 문자열 붙이기
CONCAT(expression1, expression2, ...)
SELECT CONCAT('I', ' ', 'love', ' ', 'data');
-- 결과: I love data
SPLIT: 문자열 분리하기
CAST(value AS datatype)
SELECT SPLIT('seoul,busan,incheon', ',');
-- 결과: ['seoul', 'busan', 'incheon']
REPLACE: 특정 문자열 수정하기
CAST(value AS datatype)
SELECT REPLACE('I like SQL', 'SQL', 'Python');
-- 결과: I like Python
TRIM: 문자열의 앞 뒤 공백 제거
TRIM(text)
SELECT TRIM(' data ');
-- 결과: data
UPPER: 영어 대문자 변환
UPPER(text)
SELECT UPPER('bigquery');
-- 결과: BIGQUERY
CURRENT_DATETIME : 현재 날짜와 시간을 반환한다.CURRENT_DATETIME()EXTRACT : 날짜/시간 값에서 특정 단위(YEAR, MONTH, DAY, DAYOFWEEK 등)를 추출한다.EXTRACT(part FROM datetime_expression)SELECT EXTRACT(YEAR FROM CURRENT_DATETIME());
SELECT EXTRACT(DAYOFWEEK FROM CURRENT_DATETIME());DATETIME_TRUC: 날짜/시간을 지정한 단위 기준으로 버린다.DATETIME_TRUNC(datetime_expression, part)SELECT DATETIME_TRUNC(CURRENT_DATETIME(), DAY);
-- 시·분·초를 00:00:00으로 초기화PARSE_DATETIME: 문자열을 DATETIME 타입으로 변환한다.PARSE_DATETIME(format_string, datetime_string)SELECT PARSE_DATETIME('%Y-%m-%d %H:%M:%S', '2025-12-16 14:30:00');FORMAT_DATETIME: DATETIME 타입을 문자열로 변환한다.FORMAT_DATETIME(format_string, datetime_expression)SELECT FORMAT_DATETIME('%Y-%m-%d', CURRENT_DATETIME());DATETIME_DIFF : 두 DATETIME 타입 값의 차이를 지정한 단위로 계산한다.DATETIME_DIFF(datetime_expression1, datetime_expression2, part) SELECT DATETIME_DIFF(
DATETIME '2025-12-31 00:00:00',
DATETIME '2025-12-01 00:00:00',
DAY
);
-- 결과: 30
SELECT
trainer_id,
FORMAT_DATETIME('%d/%m/%Y', MIN(catch_date)) as date
FROM
basic.trainer_pokemon
GROUP BY
trainer_id
ORDER BY
trainer_idSELECT
EXTRACT(DAYOFWEEK FROM battle_date) as day,
COUNT(*) as cnt
FROM
basic.battle
GROUP BY
day
ORDER BY
day오늘 강의를 듣기 전에는 DATETIME와 TIMESTAMP의 차이를 정확히 구분하지 못했었다.
시간을 해석하는 기준과 사용 목적이 다르다는 점에서 중요한 차이가 있었다.
DATETIME은 절대적인 날짜·시간 값을 그대로 저장하며, 타임존과 무관하게 입력한 값이 그대로 보존된다.TIMESTAMP는 UTC 기준으로 저장되고, 조회 시 DB 혹은 세션의 타임존에 따라 자동으로 변환된다.NULL일 수도 있다.DATE 타입일 수도, 문자열 타입일 수도 있다.EXTRACT와 DATETIME_TRUNC를 사용하는 문제 위주로 연습