언제나 강의로, 팁으로 질문 게시판으로 많은 것을 얻고 있습니다. 감사합니다.
다름이 아니라 매주 특정 요일 자정까지 남은 시간을 초로 알 수 있는 방법이 있을까요?
이를테면 지금이 월요일이고, 화요일 자정까지 남은 시간을 보내고 화요일 자정이 되면 다음주 화요일까지 남은 시간을 초로 보내주는 거죠.
단순히 현재시간부터 몇일 후까지 남은 시간을 계산하는 것을 하겠는데 특정 요일 시간까지 남은 기간이라고 하니까 제 머리로는 어떻게 검색을 해야 할지 모르겠습니다ㅠㅠ 도움 부탁드립니다ㅠㅠ
Comment 3
-
사이드사이드
2014.06.20 09:57
감사합니다. 날짜테이블은 생각도 못하고 있었는데 그런 방법도 있었네요. 도움 감사합니다. 말씀하신 날짜테이블로 하는 방식도 생각해서 짜봐야겠습니다. 언제나 감사합니다!!
-
향지
2014.06.20 15:27
다음번 원하는 요일 찾는 쿼리입니다.
@REPEAT_DAY_PART 에 원하는 요일 번호를 선택하시고
@TODAY 에 날짜를 넣으셔서 하시면 됩니다.
예를 들어 일요일이 기준일이면
기준이 되는 일요일을 만들고 그 기준으로 오늘 말고 다음번 일요일을 찾습니다.
-- 일1, 월2, 화3, 수4, 목5, 금6, 토7
DECLARE @REPEAT_DAY_PART INT=1 -- 특정 요일 숫자 선택
DECLARE @TODAY DATETIME
DECLARE @NEXT_WEEK_DAY DATETIME
SET @TODAY = '2014-06-22' --* SET @TODAY = GETDATE()
SELECT DATEADD(WEEK, DATEDIFF(DAY, @REPEAT_DAY_PART-2, @TODAY)/7+1, @REPEAT_DAY_PART-2)
될 것 같아서 만들어봤지만....근데 만든 사람도 저 쿼리 눈에 안들어 오는건 함정 -_-;
날짜 관련한 문제는 날짜테이블 하나 만들어두시면 쉽게 풀립니다.
1900-01-01부터 2040-12-31까지 날짜 몽땅 들어있는 테이블 하나 만들어뒀다가
오늘 이후 화요일인 날짜의 최소값을 가져오면 간단하죠.
날짜테이블 없이 풀어보았습니다.
DECLARE @TODAY DATETIME
DECLARE @TODAYPART INT --* 오늘의 WEEKDAY 값
DECLARE @NEXTDAY DATETIME
SET @TODAY = '2014-06-20' --* SET @TODAY = GETDATE()
SET @TODAYPART = DATEPART(WEEKDAY, @TODAY)
/* 오늘 WEEKDAY가 3 이하일때는 3에서 뺀값을 더하고 아니면 10에서 뺀값을 더한다. 왜 10이냐면... 해보니까... -_-;; */
SET @NEXTDAY = DATEADD(DAY, CASE WHEN @TODAYPART <= 3 THEN 3 - @TODAYPART ELSE 10 - @TODAYPART END, @TODAY)
SELECT @TODAY, @TODAYPART, @NEXTDAY
SELECT DATEDIFF(SECOND, @TODAY, @NEXTDAY)