2016-10-26 7 views
-1

그래서 매우 구체적인 작업이 있습니다. 국가 별 특정 날짜 범위가 포함 된 임시 테이블이있는 SQL 문을 실행합니다.임시 테이블의 날짜가 동적으로 변경됩니다.

INSERT INTO #dateRange(durationDesc, contryCode,startDate,endDate) 
VALUES ('Weekly - TY','UK','20160919','20160925') 
     ,('Weekly - LY','UK','20150921','20150927') 
     ,('Weekly - LW','UK','20150912','20150918') 

따라서 해당 전년도. 다른 범위는 월 단위입니다.

가장 좋은 방법은 무엇입니까? 나는 하나의 날짜 만 입력하면되고 나머지는 업데이트 될 수있는 것을 선호합니다.

질문이 있으시면 언제든지 문의하십시오.

+0

귀하의 질문에 대한 답변이 명확하지 않습니다. 당신이하려고하는 것이 무엇인지 분명히 할 수 있습니까? 또한 우리는 RDBMS에 대해 이야기하고 있습니까? SQL Server? –

+0

SQL Server. 그래서 현재는 명령문을 실행할 때마다 수동으로 날짜를 변경해야합니다. 날짜 범위를 사용하여 테이블에 연결하고 그 날짜 범위별로 그룹화 된 데이터를 반환합니다. 매주 날짜를 변경해야하는 대신이 날짜를 변경하는 데 더 역동적 인 방법이 필요합니다. – Faiz

+1

다음을 검토하십시오 : [공개 토론에 T-SQL 질문 게시 방법] (https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on- a-public-forum /). 구체적으로 '예상 출력'에주의하십시오. 해당 링크의 가이드 라인을 따르면, 우리가 원하는 것을 이해하는 것이 훨씬 쉬우 며 여기 주변 사람들이보다 쉽게 ​​도움을받을 수 있습니다. –

답변

0

당신은 항상 GETDATE()에 의해 현재의 시스템 날짜를 얻을 다음 예를 들어 DATEADD()

에 의해 적절하게 수정할 수 있습니다 코드에서

SELECT DATEADD(YEAR, -1, GETDATE()) -- Result in 1 year prior the current system datetime. 
SELECT DATEADD(MONTH, 13, GETDATE()) -- Result in 13 months after the current system datetime. 

당신이 yyyymmdd 문자열 형식으로 날짜를 변환하는 것 같다 니펫을 (필자는 필연적으로 그 필요성에 의문을 품고있다.) 이것은 다음을 통해 달성 될 수있다 : CONVERT :

SELECT CONVERT(VARCHAR, DATEADD(YEAR, -1, GETDATE()), 112) 

예를 들어 오늘이 10/26/2016 인 경우 yyyymmdd 형식의 오늘 1 년 전 결과를 표시해야합니다. 20151026

+0

그것은 tweray를 의미합니다. 그래서 어디 문자열을 내가 dateadd 함수를 사용하여 할당 된 값을 가질 것이라고 변수를 사용할 수 있습니까? – Faiz

+0

@Faiz 예, 문자열을 날짜로 저장하지 않겠습니다. – tweray

관련 문제