본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

[MS-SQL] 스칼라 함수 (1) - 구성, 날짜, 시간, 수치연산 (2012버전)

MS SQL Server 2008에서 2012 이상으로 버전을 올려서 학습 중입니다.

일단 기본 제공되는 함수부터 먼저 알아보려 합니다.

 

 

 

- 기본 제공함수는 크게 행 집합, 집계, 순위, 스칼라 함수로 분류할수있다.

- 그중, 스칼라 함수: 단일 값에 적용되어 단일 값 결과를 돌려주는 함수들

  기본 제공되는 스칼라 함수 종류는

구성 / 변환 / 커서 / 날짜 및 시간 / 논리 / 수치 연산 / 메타 데이터 / 보안 / 

문자열 / 시스템 / 시스템 통계 / 텍스트 및 이미지 함수 등

으로 나눠 진다.

 

[구성 함수]

@@LANGID / @@LANGUAGE 현재 설정된 언어의 코드번호 확인
한국의 경우 29이며, 타 언어의 ID는 sp_helplanguage 프로시저로 확인
ex) SELECT @@LANGID
@@SERVERNAME 현재 인스턴스의 이름 알고자할때
@@SERVICENAME 서비스 이름 확인
@@SPID 현재 사용자 PS 세션 ID반환. ex) SELECT @@SPID, SYSTEM_USER, USER -- 세션 ID 번호, 로그인 사용자, 사용자 조회
@@VERSION 현재 설치된 SQL Server의 버전, CPU종류, 운영체제 버전의 정보를 조회

 

[날짜 및 시간 함수]

SYSDATETIME() / GETDATE()  현재 날짜와 시간 조회
SYSDATETIME()가 좀 더 자세한? 초 밑으로 6자리. GETDATE()는 3자리
DATEADD()  날짜에 더한 결과
ex)  SELECT DATEADD(DAY, 100, GETDATE())
  -- 현재 날짜에 100을 더한 결과 조회.

day, year, month, week, hour, minute, second 등이 올 수 있다
DATEDIFF()  두 날짜의 차이 조회    
ex)  SELECT DATEDIFF(week, getdate(), '2011/01/01')    -- 과거는 음수 리턴
      SELECT DATEDIFF(week, getdate(), '2021/01/01')    -- 미래는 양수 리턴
DATENAME()  지정된 날짜의 년 / 월 / 일 조회
ex) select DATEPART(year, getdate()) -- 현재의 연도 리턴 / select DATEPART(MONTH, '2016/5/15') -- 지정된 날짜의 월 리턴
DAY(), MONTH(), YEAR()  지정된 날짜의 일/월/년을 조회

 

*** MS SQL SERVER 2012부터 제공되는 함수들 ***

DATEFROMPARTS()
DATETIME2FROMPARTS()
DATETIMEFROMPARTS()
DATETIMEOFFSETFROMPARTS()

SMALLDATETIMEFROMPARTS()
TIMEFROMPARTS()
문자열을 각각 입력하면 해당하는 데이터형식 값 리턴
ex) SELECT DATEFROMPARTS('2015','01','03')
  -- '2015-01-03' 리턴
EOMONTH() 입력한 날짜에 포함된 달의 마지막 날 리턴 (End Of Month ?)
ex) select EOMONTH(getdate()), EOMONTH(getdate(), 3) -- 2016-01-31 2016-04-30 . 오늘부터 3개월이후

 

[수치 연산 함수]

ABS() 절댓값 리턴
ROUND() 자릿수 & 반올림    ex) SELECT ROUND(12345.56667, 2) -- 12345.57000 -- 2 자릿수 밑에서 반올림
RAND()  0~1까지의 임의 숫자 리턴    ex) select RAND() -- 0.880775157154615 --임의(Random)값 리턴
SQRT()  제곱근 값 리턴    ex) select SQRT(10) -- 3.16227766016838
POWER()  거듭제곱 리턴    ex) select POWER(3, 2) -- 9 (3의 2제곱근. 9)

 

그 외 DEGREES, ACOS, EXP, ASIN, FLOOR, SIGN, ATAN, LOG, SIN, ATN2, LOG10, 

CEILING, PI, SQUARE, COS, TAN, COT, RADIANS 등