본문 바로가기
마루아라는 개발쟁이/MS.SQL

날짜계산함수 datediff, dateadd 등

by 마루아라 이야기 2022. 12. 6.

dateadd

-- 월의 마지막 날

select dateadd(month,1,getdate())-day(getdate())

-- 월의 첫째날

select dateadd(day,-(day(getdate()-1)), getdate())

-- 월의 13개월전 첫째날

select dateadd(month,-12,getdate())-(day(getdate())-1)

-- 1일 더하기

select dateadd(day,1,getdate())

-- 1월 더하기

select dateadd(month,1,getdate())

-- 1년 더하기

select dateadd(year,1,getdate())

datediff

datediff( 시간단위구분자, 시작시간, 종료시간 )

 

 

getdate()+1 은 현재시간에서 1일을 더하는 함수이다.

현재 시간이 2012-12-20 11:50:11 이면, getdate()+1 은 2012-12-21 11:50:11 이 된다

 

 

각각 분단위, 초단위, 시간단위, 일단위, 월단위, 년단위로 구한다.

select DATEDIFF ( mi , getdate() , getdate()+1 ) ==> 1440 분 (1일)

select DATEDIFF ( s , getdate() , getdate()+1 ) ==> 86400 초 (1일)

select DATEDIFF ( hour , getdate() , getdate()+1 ) ==> 24 시간 (1일)

select DATEDIFF ( day , getdate() , getdate()+1 ) ==> 1 일 (1일)

select DATEDIFF ( month , getdate() , getdate()+31 ) ==> 1 개월 (31일)

select DATEDIFF ( year , getdate() , getdate()+730 ) ==> 2 년 (730일)

 

 

 

 

 

 

http://blog.daum.net/2112990/5450912

 

 

날짜 관련 함수입니다. 쿼리문 오른쪽은 쿼리문에 대한 값입니다.

1. GETDATE() 함수

시스템의 날짜를 리턴합니다.

SELECT GETDATE() 2002-01-23 오후 9:06:52

SELECT GETDATE()+100 2002-05-03 오후 9:06:52

 

2. CONVERT() 함수

결과값의 데이타 타입을 변환시킵니다.

SELECT CONVERT(varchar(30), GETDATE(),100) Jan 23 2002 9:06PM

SELECT CONVERT(varchar(30), GETDATE(),101) 01/23/2002

SELECT CONVERT(varchar(30), GETDATE(),102) 2002.01.23

SELECT CONVERT(varchar(30), GETDATE(),103) 23/01/2002

SELECT CONVERT(varchar(30), GETDATE(),104) 23.01.2002

SELECT CONVERT(varchar(30), GETDATE(),105) 23-01-2002

SELECT CONVERT(varchar(30), GETDATE(),106) 23 Jan 2002

SELECT CONVERT(varchar(30), GETDATE(),107) Jan 23, 2002

SELECT CONVERT(varchar(30), GETDATE(),108) 21:06:52

SELECT CONVERT(varchar(30), GETDATE(),109) Jan 23 2002 9:06:52:287PM

SELECT CONVERT(varchar(30), GETDATE(),110) 01-23-2002

SELECT CONVERT(varchar(30), GETDATE(),111) 2002/01/23

SELECT CONVERT(varchar(30), GETDATE(),112) 20020123

SELECT CONVERT(varchar(30), GETDATE(),113) 23 Jan 2002 21:06:52:317

SELECT CONVERT(varchar(30), GETDATE(),114) 21:06:52:317

 

3. DATEPART() 함수

날짜에서 지정한 날자형식부분만 추출해줍니다.

형식 : DATEPART(날짜형식, 날짜)

SELECT DATEPART(yy, GETDATE()) 2002

SELECT DATEPART(mm, GETDATE()) 1

SELECT DATEPART(dd, GETDATE()) 23

SELECT DATEPART(hour, GETDATE()) 21

SELECT DATEPART(mi, GETDATE()) 6

SELECT DATEPART(ss, GETDATE()) 52

SELECT DATEPART(dw, GETDATE()) 4

위 내용은 년/월/일/시/분/초/요일을 숫자로 보여준 예제입니다.

 

4. YEAR() , MONTH() , DAY() 함수

해당 년,월,일을 각각 뽑아줍니다.

형식 : YEAR(날짜), MONTH(날짜), DAY(날짜)

SELECT YEAR(GETDATE()) 2002

SELECT MONTH(GETDATE()) 1

SELECT DAY(GETDATE()) 23

 

5. DATEADD() 함수

DATEADD함수는 날짜에 지정한 만큼을 더합니다.

형식 : DATEADD(날짜형식, 더할 값, 날짜)

SELECT DATEADD(mm,20,GETDATE()) 2003-09-23 오후 9:06:52

현재날짜에 월에 20을 더한 날짜를 출력하라.

SELECT DATEADD(dd,100,GETDATE()) 2002-05-03 오후 9:06:52

오늘부터 100일 후의 날짜를 출력하라.

 

6. DATEDIFF() 함수

DATEDIFF함수는 두 날짜사이의 날짜형식에 지정된 부분을 돌려줍니다.

형식: DATEDIFF(날짜형식, 시작 날자, 끝 날짜)

SELECT DATEDIFF(dd,GETDATE(),'3000.1.1') 364490

현재날짜와 3000.1.1일 사이의 일수는 얼마일까.??

SELECT DATEDIFF(MM,GETDATE(),'2003.1.1') 12

현재날짜와 2003.1.1일 사이의 월수는 얼마일까.??

 

7. DATENAME() 함수

DATENAME함수는 지정한 날짜의 날자형식의 이름을 돌려줍니다.

형식: DATENAME(날짜형식, 날짜)

SELECT DATENAME(mm,GETDATE()) January

SELECT DATENAME(dd,GETDATE()) 23

SELECT DATENAME(dw,GETDATE()) Wednesday

728x90
반응형
LIST