기록
database - 다양한 함수 (날짜함수, 변환함수) 본문
<날짜 함수>
CURRENT_DATE - 현재 날짜
이 함수가 실행된 날을 반환 값으로 출력한다.
인수가 없기 때문에 괄호가 필요 없다.
SELECT CURRENT_DATE;
CURRENT_TIME - 현재 시간
함수가 실행된 시간을 취득한다. 인수가 없어서 괄호가 필요 없다.
SELECT CURRENT_TIME;
CURRENT_TIMESTAMP - 현재 일시
현재날짜와 현재시간 기능을 합친 기능을 가진 함수다.
취득한 결과로부터 날짜나 시간만 잘라낼 수도 있다.
SELECT CURRENT_TIMESTAMP;
EXTRACT - 날짜 요소 추출하기
날짜 데이터에서 일부분을 추출하는 것으로, 예를 들어 '년', '월' 또는 '시간'이나 '초'만 추출할 때 사용한다.
반환형은 날짜형이 아닌 숫자형이 된다.
SELECT CURRENT_TIMESTAMP,
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year,
EXTRACT(month FROM CURRENT_TIMESTAMP) AS month,
EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS day,
EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS hour,
EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS minute,
EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS second;
<변환 함수>
SQL에서 변환은 크게 두가지 의미가 있다.
1. 데이터형 변환 (형변환, 캐스트)
2. 값 변환
CAST - 형 변환
CAST(변환 전 값 AS 변환할 데이터형)
데이터형에 맞지 않는 데이터를 테이블에 등록하거나 연산할 대, 형이 일치하지 않으면 에러가 발생하거나 암묵적인 형변환이 일어나서 처리 속도 저하가 야기될 수 있기 때문이다.
이런 경우에는 사전에 적절한 형으로 변환해둘 필요가 있다.
SELECT CAST('0001' AS INTEGER) AS int_col; -- SQL Server, PostgreSQL
SELECT CAST('0001' AS SIGNED INTEGER) AS int_col; -- MySQL
SELECT CAST('2019-07-30' AS DATE) AS date_col;
COALESCE - NULL을 값으로 변환
COALESCE(데이터1, 데이터2, 데이터3 ...)
이것은 SQL 독자함수이다. 복수개의 인수를 가지며, 왼쪽부터 차례로 인수를 보고 처음으로 NULL이 아닌 값이 나타났을 때 그 값을 반환한다. 자유롭게 인수를 늘릴 수 있다.
변형된 형태의 함수지만 실제로는 매우 자주 사용된다.
SQL문에서 NULL을 별도의 값으로 변경해서 처리하고 싶을 때 사용한다.
앞서 배운 것처럼, NULL이 연산이나 함수 안에 포함되면 결과가 전부 NULL로 바뀐다.
이러한 현상을 방지할 때 유용하게 사용된다.
SELECT COALESCE(NULL, 1) AS col_1,
COALESCE(NULL, 'test', NULL) AS col_2,
COALESCE(NULL, NULL, '2019-07-30') AS col_3;
SELECT COALESCE(str2, 'NULL입니다')
FROM SampleStr;
이처럼 NULL을 포함하는 열이라도 COALESCE로 별도의 값으로 변환 후에 다른 함수나 연산에 입력함으로써
결과가 NULL이 되는 것을 방지할 수 있다.
'[Study] > Database' 카테고리의 다른 글
database - CASE 식 (CASE WHEN , ELSE , END) (0) | 2019.08.02 |
---|---|
database - 술어 (LIKE, BETWEEN, IS NULL, IN, EXISTS) (0) | 2019.07.31 |
database - 다양한 함수 (산술함수, 문자열함수) (0) | 2019.07.30 |
database - 상관 서브쿼리 (0) | 2019.07.29 |
database - 서브쿼리와 뷰 (0) | 2019.07.29 |