2017-09-26 5 views
3

MS SQL 2008R2 익스프레스, 데이터베이스가있는 행이있는 테이블이 하나 있습니다. 그리고 db 크기가 약 10GB가되면이 테이블에서 가장 오래된 한 주를 정리해야합니다 (나는 날짜를 모른다). 대본을 가지고 나를 도와 줄 수 있습니까? 감사.MS SQL 데이터베이스에서 가장 오래된 주 (기간)를 삭제하는 방법은 무엇입니까?

UPD1. 열 dateAndTime의가있다, 그래서 내가 VBA에서이 같은 쿼리를 만들 :

strSQL = "SELECT DateAndTime 
       ,TagName 
       ,Val 
       ,SetPoint 
       ,Limit_H 
       ,Limit_L 
       ,Result 
      FROM dbo.Statistic 
      WHERE DateAndTime BETWEEN CAST('" & TimeBegin & "' AS datetime) AND CAST('" & TimeEnd & " ' AS datetime) 
      Order By DateAndTime desc , (CASE WHEN ISNUMERIC(TagName)=1 THEN CAST(CAST(TagName AS float) AS INT)END) desc" 
+1

"가장 오래된 주"를 어떻게 식별합니까? 이것이 처음로드 된 데이터이고 테이블에 타임 스탬프가 없다는 것을 의미합니까? 메타 데이터로만 삭제 하시겠습니까? – Christian4145

+0

ID 열이 있습니까? 또는 그것은 어떤 식 으로든 주문 되었습니까? – dbajtr

+1

샘플 데이터를 게시 할 수 있습니까? – etsa

답변

1

무엇 이것에 대해 - ANKIT 제안으로

DELETE YOUR_TABLE 
WHERE DATE_COL BETWEEN (SELECT MIN(DATE) FROM YOUR_TABLE) AND (SELECT MIN(DATE) FROM YOUR_TABLE) + 7 
+0

'delete from'는 올바른 구문이며, SQL 서버의 경우'dateadd()'가 필요합니다. – JohnHC

+1

'DELETE'만으로도 똑같이 처리 할 것입니다. 그리고이 구문은 아직 시도하지는 않았지만 작동해야합니다. –

+1

@JohnHC 그것은 내 MSSQL 데이터베이스에서 작동합니다 : SELECT GETDATE() - 7 – etsa

1

이 날짜의 분()를 사용하고 일주일에 추가

delete 
from dbo.statistic 
where dateandtime between min(dateandtime) 
        and dateadd(week, 1, min(dateandtime))