입사한날짜 join_dt =2012-11-11
현재날짜 getdate() = 현재(2014-01-14)
재직근무기간을 구해야합니다.
구하고나서 몇년몇개월 이라는걸 표기를 해줘야되요..
예) 2012-11-11 ~ 2014-01-14(약 0년0개월 )
이런식으로.. 가르쳐주시면 감사하겠습니다.
Comment 8
-
향지
2014.01.14 22:16
-
뽀챙
2014.01.15 08:34
답변감사드립니다.
SELECT DATEDIFF(MONTH, '2013-11-11', '2014-09-11')
이렇게 하면 약 10개월이 나와야되는데
근속기간 = x년 x일
이렇게 표시할려고 하니깐
SELECT DATEDIFF(YEAR, '2013-11-11', '2014-09-11')
이렇게 하면 1년이 나옵니다.
원래라면 0년이 나와야하는데..
개월수를 년수로 바꿀수있는 방법이 있나요? -
김동우(탱소연)
2014.01.15 10:04
datediff(year , xx , xx)의 year 옵션 자체가 달까지 계산하는게 아니라 연도만 따지는거라 그렇게 나오는거라고하네요 ㅋmonth로 해서 년 월을 나타내게끔 해야할듯요;; -
건우아빠
2014.01.15 10:23
걔산을 일로 하느냐 월로 하느냐에 따하 조금씩을 달라질수 있습니다.
월로 걔산
with res
as (
select '2012-11-11' [시작일] , convert(varchar(10), GETDATE() ,21 ) [현재일]
, DATEDIFF( mm, '2012-11-11' , convert(varchar(10), GETDATE() ,21 ) ) + (case when convert(varchar(10), GETDATE() ,21 ) = '2012-11-11' then 0 else 1 end) [근무개월]
)
select [시작일]
, [현재일]
, [근무개월]
, CAST( [근무개월] / 12. AS INTEGER ) [년]
, [근무개월] % 12 [개월]
from res일로 하신다면 일수를 계산하시고 365 로 나눈몫이 년수가 되고 그 나머지를 30,31로 나눈 몫이 월이 되겠네요...
-
뽀챙
2014.01.15 11:55
년 월 일로 표시를 할때 30일인지 31일인지는 어떻게 판단해야 할까요ㅠㅠ감이안오네요 흐규..
-
건우아빠
2014.01.15 13:34
거기까지는 안하는게... 경력을 일까지 정확히 뽑지는 않을듯 하구요..
윤년 계산까지 해야 할 필요는 없을듯 합니다.
보통은 365, 30일로 계산하시면 큰 오차는 없을듯 하네요...
30.5 로 나누서도 됩니다... 2월달 28,29까지 가만 하실려면 윤년계산까지 ㅎㅎ 굳이...
-
뽀챙
2014.01.15 14:09
기준일이 2013년12월31일이고 끝점이 2014년1월15일인데
이기간은 한달이 안되는기간인데 월로 계산하니깐 자꾸 1이 나오네요ㅠ 0으로 나오고 일수가 나와야되는데ㅠㅠ
-1을 해줘야하나요?
-
건우아빠
2014.01.15 14:29
with res
as (
select '2013-12-31' [시작일] , convert(varchar(10), GETDATE() ,21 ) [현재일]
, DATEDIFF( dd, '2013-12-31' , convert(varchar(10), GETDATE() ,21 ) ) [근무일]
)
select [시작일]
, [현재일]
, [근무일]
, CAST( [근무일] / 365. AS INTEGER ) [년]
, ([근무일] % 365) / 30 [개월]
, ([근무일] % 365) % 30 [일]
from res
-- 이런식으로 월만 계산해서 일단 구하고...
SELECT DATEDIFF(MONTH, '2012-11-11', GETDATE())
-- 날짜 비교해서 -이면 한달이 안됐으니깐 -1달
SELECT DATEPART(DAY, GETDATE()) - DATEPART(DAY, '2012-11-11')
비슷하게 하면 되지 않을까요?