관리 메뉴

Data Modeling Evangelist Kaien Kim's Blog

[SQLServer] 날짜관련 함수 본문

DATA/SQLServer

[SQLServer] 날짜관련 함수

2009. 5. 18. 16:41

-- 15일 후 날짜구하기
SELECT GETDATE(), DATEADD(DD, 15, getdate())
-- 3달 후 날짜구하기
SELECT GETDATE(), DATEADD(MM, 3, getdate())

-- 기간차이 구하기(날짜 사이의 간격)
SELECT DATEDIFF(year, '20051220', '20060101')
SELECT DATEDIFF(month, '20051220', '20060101')
SELECT DATEDIFF(day, '20051220', '20060101')
SELECT DATEDIFF(hh, date1, date2)
SELECT DATEDIFF(mi, date1, date2) -- 분
SELECT DATEDIFF(ss, date1, date2) -- 초
SELECT DATEDIFF(ms, date1, date2) -- 밀리세컨드


--현재 달의 첫 째날 구하기
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--현재주의 월요일 구하기
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
--현 재해의 첫 째날 구하기
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
--현재분기의 첫 째날 구하기
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--현재 날의 자정주의 구하기
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)



select dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate() ), 0))
--지난달의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate() ), 0))
--지난해의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate() )+1, 0))
--현재 달의 마지막 날 구하기

select dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate() )+1, 0))
--현재 해의 마지막 날 구하기

그럼 마지막으로 한번 더 응용해서 해당 달의 첫째 주 월요일을 구해보자
select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
--현재 달의 첫째 주 월요일 구하기