'함수'에 해당되는 글 2건

  1. 2009.05.18 [SQLServer] 날짜관련 함수
  2. 2009.03.20 [Oracle]현재월의 첫 특정요일, 마지막 주 특정요일 가져오기

[SQLServer] 날짜관련 함수

DATABASE/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)
--현재 달의 첫째 주 월요일 구하기

Trackbacks 0 : Comments 0

Write a comment


[Oracle]현재월의 첫 특정요일, 마지막 주 특정요일 가져오기

DATABASE/Oracle 2009. 3. 20. 16:08

우리가 가끔 날짜관련 계산을 하다보면 첫번째 월요일이라든가 마지막 주 월요일이라든가...
뭐 이런 날을 가져와야 할 경우가 있다. 그전에는 날짜 테이블이 있어 쉽게 가져올 수 가있었는데
그렇지 않은 경우는 천상 쿼리로 구현할 수 밖에 없다.
여기에서 핵심 함수는 last_day(date), next_day(date,char) 이다.
그 용법은 간단히 소개하면

last_day()
: 지정한 일자가 포함된 월의 말일
예)
select last_day(sysdate) from dual  -- 지금은 2009년3월20일이다.
09/03/31

next_day(date,char)
: 지정한 일자 다음에 나타나는 지정 요일(두번째 인수)
예)
select next_day((last_day(sysdate)),'금요일') from dual
select next_day((last_day(sysdate)),'금') from dual
select next_day((last_day(sysdate)),6) from dual  -- 일:1 ~ 토:7
09/04/03
뭐 이런식이다

위의 함수를 응용하면 2009년3월의 첫번째 월요일과 마지막주 월요일은 아래와 같이
구할 수 있다.

-- 첫주 월요일
select next_day((trunc(sysdate,'mm')-1),'월') from dual
-- 마지막주 월요일
select next_day((last_day(sysdate)-7),'월') from dual


Trackbacks 0 : Comments 0

Write a comment