2011-03-12 3 views
0

'Select Week :'라는 드롭 다운이 있으며이 드롭 다운은 값으로 3 주, 즉 그 다음 주, 다음 주 및 그 다음 주를 가질 수 있습니다. 이 값은 SQL 문을 사용하여 드롭 다운으로 업데이트해야합니다.SQL을 사용하여 주 선택

예 : 오늘은 03/12/2011이며 드롭 다운의 옵션은 다음과 같습니다 : 03/06/2011 - 03/12/2011 (일 - 토) 03/13/2011 년 03 월 19 일 (일요일부터 토요일) 2011 년 3 월 20 일 - 03/26/2011 (일요일에서 토요일)

SELECT 사례를 사용하여 코드의 일부분을 작성했습니다. 코드와 그 뒤의 올바른 논리를 도와주세요. 어떤 도움 :)

select case when 
to_char(sysdate,'day') = 'saturday' 
then 
to_char(next_day(sysdate,'sunday')-7,'mm/dd/yyyy') || '-' || to_char 
(next_day(sysdate-1,'saturday'),'mm/dd/yyyy') 
else || '-' || to_char 
(next_day(sysdayte,'saturday'),'mm/dd/yyyy') 
end weeks from dual union .... union 

.... 사전에 Thnx는

+0

이 응용 프로그램 측에서 수행하는 것이 더 쉽습니다 @weekNow 조합을 선택 WeekNo. 데이터베이스 상태에 종속 된 조건이없는 한. –

답변

1

당신이 SQL과 GUI 사이에 너무 꽉 종속성이 나에게 보인다. 빈약 한 SQL 쿼리에 너무 많은 압력을 가하고 있습니다. 왜 SQL을 사용하여 데이터베이스에서 데이터를 가져오고 모든 계산 논리를 실제 프로그래밍 언어로 남겨 두지 않습니까? 그것은 훨씬 더 읽기 쉽고 유지하기가 더 쉬울 것입니다. 이 쿼리는 모든 문자열 연결이 너무 추해 보입니다.

+0

@IIya : 그렇습니다. 일을하는 일은 결코 쉬운 일이 아니지만, 어떻게해야하는지 묻습니다. 주 계산에 대한 논리에 대한 제안 사항은 훌륭합니다. – user656523

1

DB에서 수행해야하는 경우 ...

주별 코드 만 표시합니다. 비슷한 방식으로 각 시간의 시작일을 추출 할 수는 있지만 로컬 db 테이블에 저장 한 다음 해당 유니 코드의 istead를 선택하는 것보다. declare @weeks table (weekno int, starting datetime , 종료 날짜 시간)

declare @now datetime; @now = getdate();

declare @previousWeek int; 세트 @previousWeek = datepart (주, (dateadd (주, -1, @now)));

declare @nextWeek int; @nextWeek = datepart (week, (dateadd (week, 1, @now)));

declare @weekNow int; @weekNow = datepart (주, @now);

선택 @previousWeek는 조합 선택 @nextWeek이

관련 문제