메모장

05-2 날짜 함수 본문

DB/[SQL 입문]

05-2 날짜 함수

Itchild 2024. 4. 11. 13:03
728x90
반응형

 

날짜 함수는 날짜나 시간 데이터 작업을 위한 다양한 기능을 제공한다.

 

  • 서버의 현재 날짜 , 시간 반환 하기 : GETDATE, SYSDATETIME 함수

만약 현재 접속중인 데이터베이스 서버의 시간을 확인하려면 GETDATE, SYSDATETIME 함수를 사용한다.

차이점은 GETDATE -> 소수점 3자리 까지 , SYSDATETIME -> 소수점 7자리

 

기본 형식

SELECT GETDATE(), SYSDATETIME()

 

  • 서버의 현재 UTC 날짜 , 시간 반환하기 : GETUTCDATE, SYSUTCDATETIME 함수

현재 접속한 데이터베이스 서버의 협정 세계시(UTC) 시간을 확인하려면 사용해야 한다.

 

기본 형식

SELECT GETUTCDATE(), SYSUTCDATETIME()


날짜 더하기,빼기 : DATEADD

날짜를 더하거나 빼려면 DATEADD 를 사용한다.

날짜형식(datepart), 숫자(year) , 더하거나 뺄 대상날짜(date) 를 인자로 받는다.

현재 날짜에서 연도를 1씩 가감
SELECT GETDATE() , DATEADD(YEAR, 1, GETDATE())
2023-06-25 10:00:00.000  , 2024-06-25 10:00:00.000

SELECT GETDATE() , DATEADD(YEAR, -1, GETDATE())
2023-06-25 10:00:00.000  , 2022-06-25 10:00:00.000
 

날짜 차이 구하기 : DATEDIFF

날짜 차이 반환: DATEDIFF 함수
DATEDIFF (datepart, startdate, enddate)

날짜 형식을 year로, 시작날짜를 '2019-12-31'로, 종료날짜를 '2021-01-01' 로 전달하면
시작날짜와 종료날짜 사이의 기간을 1년 단위로 반환한다. 
SELECT DATEDIFF(year, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
 

지정된 날짜 일부 반환하기 : DATEPART, DATENAME

DATEPART 함수와 DATENAME 함수는 지정된 날짜의 일부를 반환한다.

두 함수의 차이점은 DATEPART 함수는 반환값이 월요일 이라면 1과 같은 숫자를 , DATENAME함수는 반환값이 금요일이라면 금요일 그대로 실젯값을 반환한다는 것이다.

DATEPART 함수 사용
SELECT symbol, last_crawel_date,
DATEPART(year, last_crawel_date),
DATEPART(month, last_crawel_date),
DATEPART(day, last_crawel_date),
DATEPART(weekday, last_crawel_date),
FROM nasdaq_company 
출력결과 : 6 6 6 3 6 
------------------------------------------

DATENAME 함수 사용
SELECT symbol, last_crawel_date,
DATENAME(year, last_crawel_date),
DATENAME(month, last_crawel_date),
DATENAME(day, last_crawel_date),
DATENAME(weekday, last_crawel_date),
FROM nasdaq_company 
출력결과 : 금요일 금요일 금요일 화요일  금요일 
 

날짜에서 일, 월, 연도 가져오기 : DAY, MONTH, YEAR

큰 의미에서는 DATEPART 함수와 같지만 부분으로 사용하고 싶을때 요긴한 함수이다.

SELECT symbol, last_crawel_date,
YEAR(last_crawel_date),
MONTH(last_crawel_date),
DAY(last_crawel_date),
FROM nasdaq_company 
 

날짜 자료형 또는 형태 변환하기 : CONVERT 함수

다양한 날짜 형태를 표현할 수 있다.

YYYY-MM-DD hh:mm:ss.sss 형태를 YY/MM/DD 형태로 표현하고자 각 날짜를 파트별로 잘라서 문자열로 변환한 다음 서로 연결 시키기

YYYY-MM-DD hh:mm:ss.sss 형태를 YY/MM/DD 형태로 표현하고자 각 날짜를 파트별로 잘라서 
문자열로 변환한 다음 서로 연결 시키기

SELECT symbol, last_crawel_date,
 CONVERT(nvarchar(10), year(last_crawel_date)) + '/' +
 CONVERT(nvarchar(10), month(last_crawel_date)) + '/' +
 CONVERT(nvarchar(10), day(last_crawel_date))
FROM nasdaq_company
출력결과 : 2021-11-05 00:00:00.000   ----->   2021/11/5 
----------------------------------------------------------------
스타일 매개변수를 사용하면 이렇게 하지 않아도 2021/11/5 형태로 바꿀수 있다.
SELECT CONVERT(NVARCHAR(20), last_crawel_date, 111) FROM nasdaq_company
---> 2021/11/05

SELECT CONVERT(NVARCHAR(20), last_crawel_date, 112) FROM nasdaq_company
---> 20211105
 

 

 

728x90
반응형

'DB > [SQL 입문]' 카테고리의 다른 글

05-4 수학함수  (0) 2024.04.11
05-3 집계함수  (0) 2024.04.11
05-1 문자열 함수  (0) 2024.04.11
04-3 공통 테이블 식  (0) 2024.04.11
04-2 서브쿼리  (0) 2024.04.11