기록

database - 다양한 함수 (날짜함수, 변환함수) 본문

[Study]/Database

database - 다양한 함수 (날짜함수, 변환함수)

Dannnnnn 2019. 7. 30. 19:41
반응형

<날짜 함수>

 

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이 되는 것을 방지할 수 있다.

 

반응형