SQL은 문자열과 날짜를 다루는 내장 함수를 제공합니다 — 포매팅, 부분 추출, 차이 계산. 데이터 변환과 날짜 기반 쿼리에 필수적이지만, 정확한 이름은 데이터베이스 방언마다 다릅니다.
흔한 문자열 함수
SELECT
UPPER(name), LOWER(name), -- 대소문자 변환
LENGTH(name), -- 문자열 길이
CONCAT(first_name, ' ', last_name), -- 문자열 결합 (일부 DB에서는 ||)
SUBSTRING(name, 1, 3), -- 부분 문자열 추출
TRIM(name), -- 주변 공백 제거
REPLACE(phone, '-', ''), -- 텍스트 치환
LEFT(name, 3), RIGHT(name, 3), -- 왼쪽/오른쪽 끝 문자
POSITION('@' IN email) -- 부분 문자열의 위치 찾기
FROM users;
문자열 함수는 텍스트를 변환하고 추출합니다 — 출력 포매팅, 데이터 정제, 계산된 값 생성에 유용합니다.
흔한 날짜/시간 함수
SELECT
NOW(), CURRENT_DATE, CURRENT_TIMESTAMP, -- 현재 날짜/시간
EXTRACT(YEAR FROM created_at), -- 부분 추출 (YEAR, MONTH, DAY, HOUR...)
DATE_TRUNC('month', created_at), -- 단위로 절삭 (Postgres)
created_at + INTERVAL '7 days', -- 날짜 산술 (시간 더하기)
AGE(NOW(), birth_date), -- 날짜 간 차이 (Postgres)
TO_CHAR(created_at, 'YYYY-MM-DD') -- 날짜를 텍스트로 포맷 (Postgres)
FROM events;
날짜 함수는 현재 시간을 얻고, 부분(연, 월)을 추출하고, 산술(간격 더하기/빼기)을 하고, 차이를 계산하고, 날짜를 포맷합니다 — 시간 기반 쿼리와 리포팅에 필수적입니다.
흔한 패턴: 시간 단위로 그룹화
-- 월별 이벤트 수 세기 (빈번한 리포팅 요구)
SELECT
DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS event_count
FROM events
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month;
추출/절삭된 날짜 부분(월, 일, 연)으로 그룹화하는 것은 매우 흔한 리포팅 패턴입니다.
방언 차이 (중요한 주의사항)
⚠️ 함수 이름/구문이 데이터베이스마다 크게 다름:
문자열 결합: CONCAT() vs || vs +
날짜 함수: DATE_TRUNC/EXTRACT (Postgres) vs DATE_FORMAT (MySQL) vs DATEPART (SQL Server)
→ 자신의 데이터베이스 문서를 확인할 것; 개념은 이식되지만 정확한 구문은 다름.
왜 중요한가
문자열과 날짜 함수는 필수적이고 실용적으로 필요한 SQL 도구입니다 — 텍스트를 다루고 날짜로 작업하는 것은 실제 쿼리에서 끊임없는 요구이므로(출력 포매팅, 데이터 정제, 시간 기반 필터링과 리포팅), 이해하는 것은 가치 있는 일상 지식입니다. 문자열 함수(대소문자 변환, 결합, 부분 문자열, 치환, trim)는 텍스트 변환과 정제를 처리하며, 포매팅과 데이터 조작을 위한 많은 쿼리에 나타납니다. 날짜 함수는 특히 중요한데 시간 기반 쿼리와 리포팅이 보편적이기 때문입니다 — 현재 시간 얻기, 날짜 부분 추출(연, 월), 날짜 산술(간격 더하기, 차이 계산), 날짜 포매팅은 날짜 범위로 필터링, 나이/기간 계산, 특히 시간 단위로 그룹화(월별/일별 개수 — 매우 흔한 리포팅 패턴)에 필요합니다.
이 함수들을 이해하면 실제 애플리케이션이 끊임없이 요구하는 텍스트와 날짜 조작을 처리할 수 있습니다.
중요한 실용적 주의사항은 함수 이름과 구문이 데이터베이스 방언마다 크게 다르다는 것입니다(문자열 결합과 날짜 함수가 PostgreSQL, MySQL, SQL Server 간에 눈에 띄게 다름) — 그래서 개념(이식됨)을 알면서 자신의 특정 데이터베이스 구문을 확인하는 것이 중요합니다.
문자열과 날짜를 다루는 것은 조회, 리포팅, 데이터 처리에서 빈번한 요구이고, 날짜 기반 그룹화/필터링은 분석의 중심이므로, 흔한 문자열 및 날짜 함수를 이해하고 방언 차이를 인식하는 것은 실용적 데이터 작업에 필수적인 유용하고 자주 적용되는 SQL 지식입니다.
