날짜 관련 쿼리

-- 날짜 함수에 사용되는 0 은 '1900-01-01 00:00:00.000' 을 의미한다.

-- 올해의 첫날
SELECT DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0)
-- 올해의 마지막날
SELECT DATEADD( dd, -1, DATEADD(yy, DATEDIFF(yy,0,GETDATE())+ 1, 0) )
-- 작년의 첫날
SELECT DATEADD(yy, DATEDIFF(yy,0,GETDATE())-1, 0)
-- 작년의 마지막날
SELECT DATEADD( dd, -1, DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0) )
-- 이번 분기 첫날
SELECT DATEADD(qq, DATEDIFF(qq,0,GETDATE()), 0)
-- 이번 분기 마지막날
SELECT DATEADD( dd, -1, DATEADD(qq, DATEDIFF(qq,0,GETDATE())+1, 0) )
-- 지난 분기 첫날
SELECT DATEADD(qq, DATEDIFF(qq,0,GETDATE())-1, 0)
-- 지난 분기 마지막날
SELECT DATEADD( dd, -1, DATEADD(qq, DATEDIFF(qq,0,GETDATE()), 0) )
-- 이번 달의 첫날
select DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 0)
-- 이번 달의 마지막날
select DATEADD( dd, -1, DATEADD(mm, DATEDIFF(mm,0,GETDATE())+1, 0) )
-- 지난 달의 첫날
select DATEADD(mm, DATEDIFF(mm,0,GETDATE())-1, 0)
-- 지난 달의 마지막날
select DATEADD( dd, -1, DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 0) )
-- 이번 주의 첫날(월요일)
select DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
-- 이번 주의 마지막날(일요일)
select DATEADD( dd, -1, DATEADD(wk, DATEDIFF(wk,0,GETDATE())+1, 0) )

-- 아래는 시간으로 계산 되기때문에 초로 처리한다.
-- 오늘 시작
select DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)
-- 오늘 끝
select DATEADD( ss, -1, DATEADD(dd, DATEDIFF(dd,0,GETDATE())+1, 0) )
-- 어제 시작
select DATEADD(dd, DATEDIFF(dd,0,GETDATE())-1, 0)
-- 어제 끝
select DATEADD( ss, -1, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0) )

댓글 없음: