1월에 30일 2월에 31일 3월에 30 이 일수고
조회 년월이 1~3월이면 이 일수에 합 구하는 방법이 있나요?
Comment 8
-
항해자™
2013.09.10 20:16
-
minsouk
2013.09.10 20:28
select datediff (dd, '20010101', '20010103') + 1
declare
@s int = 1
, @e int = 3
, @year int ='2012'
select
datediff(
dd
, cast(@year as varchar(4))+right('0'+cast(@s as varchar(2)),2)+'01'
, cast(@year as varchar(4))+right('0'+cast(@e+1 as varchar(2)),2)+'01') -
항해자™
2013.09.10 20:35
2월에 31일이 나오나요?? -
minsouk
2013.09.10 20:49
대충하자....-_- 대충 질문했는데....
-
건우아빠
2013.09.10 22:48
ㅋㅋㅋ
-
fins
2013.09.11 08:32
아 죄송합니다.
그러니까 제가 원하는건 예를 들어 MONTH_BETWEEN('201303','201301') 이걸 쓰면 1월에서 3월에 개월수 를 구할수 있잖아요
이런식으로 1월 부터 3월에 일수의 합을 구하는 방법이 궁금합니다.
LAST_DAY를 쓰면 특정 한월에 마지막날 즉 그월에 일수를 구할수가 있는데 저는 기간으로 조회를 할때 그 기간 일수의 합을 구하고 싶은 거거든요
위에서 썼듯이 예를 들어 1월에 일수가 30 이고 2월이 30이고 3월이 30이다 그럼 1~3월 기간으로 조회했을때 90이라는 값을 얻고 싶습니다.
-
예를 들어서 "7~11월에는 몇개의 날짜가 있는가" 같은 건가요?
그렇다면 DATEDIFF를 이용해서 7월 1일 부터 (월의 시작은 항상 1)
11월의 마지막 날짜 까지를 COUNT 하면 되겠네요.
하지만 11월의 마지막 날짜를 모르니...
SQL SERVER 2012에서는 EOMONTH라는 그 달의 마지막 날을 반환하는 함수가 있습니다.
그게 아니라면 11월의 다음 달, 즉 12월의 첫날인 1일 에서 하루를 뺀 날짜를 구하면 그 달의 마지막 날짜가 됩니다.
-
한태
2016.03.21 21:55
declare @s int = 1declare @e int = 3declare @sdate varchar(15)declare @edate varchar(15)set @sdate = '2016'+right('0'+ convert(varchar,@s),2) + '01'set @edate = '2016'+right('0'+ convert(varchar,@e),2) + '01'select DATEDIFF(dd, @sdate, DATEADD(DD,-1, DATEADD(MM,1,@edate)) ) +1
다음 분에게 패스;;