programing

SQL Server 쿼리를 사용하여 날짜가 30일보다 오래된 행 삭제

yellowcard 2023. 6. 19. 21:21
반응형

SQL Server 쿼리를 사용하여 날짜가 30일보다 오래된 행 삭제

30일이 지난 행을 삭제하려면 SQL 문이 필요합니다.

내 테이블events들판이 있습니다.date데이터베이스에 삽입된 날짜와 시간을 포함합니다.

이것이 효과가 있을까요?
SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())

WHERE 절에 DATEADD 사용:

...
WHERE date < DATEADD(day, -30, GETDATE())

약어를 사용할 수도 있습니다.d또는dd대신에day.

사용할 수도 있습니다.

SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;

비록DATEADD아마도 이것을 하는 가장 투명한 방법일 것입니다, 간단히 언급할 가치가 있습니다.getdate()-30또한 충분할 것입니다.

또한, 지금부터 30일(예: 시간, 분, 초 등)을 찾고 계십니까?또는 오늘 자정부터 30일(예: 12/06/2010 00:00.000)까지입니다.이 경우 다음을 고려할 수 있습니다.

SELECT * 
FROM Results 
WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)

Date_column에 날짜 시간 값이 30일보다 오래된 테이블에서 레코드를 삭제하려면 다음 쿼리를 사용합니다.

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < GETDATE() - 30

...또는 다음과 같습니다.

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(dd,-30,GETDATE())

Date_column에 날짜 시간 값이 12시간보다 오래된 레코드를 테이블에서 삭제하려면:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(hh,-12,GETDATE())

Date_column에 날짜 시간 값이 15분보다 오래된 레코드를 테이블에서 삭제하려면:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-15,GETDATE())

보낸 사람: http://zarez.net/ ?p=542

두 날짜 사이에 설정할 수도 있습니다.

Delete From tblAudit
WHERE Date_dat < DATEADD(day, -360, GETDATE())
GO
Delete From tblAudit
WHERE Date_dat > DATEADD(day, -60, GETDATE())
GO

다음을 사용할 수 있습니다.

    DELETE FROM table_name WHERE date_column < 
           CAST(CONVERT(char(8), (DATEADD(day,-30,GETDATE())), 112) AS datetime)

그러나 더 나은 옵션은 다음과 같습니다.

DELETE FROM table_name WHERE DATEDIFF(dd, date_column, GETDATE()) > 30

전자는 논쟁할 수 없으며(즉, 인덱스를 사용할 수 없도록 표현식의 오른쪽에 있는 기능) 30초가 걸리고 후자는 논쟁할 수 있고 1초 미만이 걸립니다.

GETDATE()SQL 8을 사용하는 데 도움이 되지 않았습니다.

오류 1305(42000): 데이터베이스를 작동합니다.GETDATE가 존재하지 않습니다.

하지만 이것은 다음과 같습니다.

DELETE FROM table_name WHERE date_column < CURRENT_DATE - 30;

날짜(varchar(8), [날짜], 112)만 얻기 위해 varchar로 변환하는 대신 날짜 필드를 날짜 필드로 유지하고(시간 없이) 날짜만 지정하는 것을 선호합니다.

SELECT * FROM Results 
WHERE CONVERT(date, [Date]) >= CONVERT(date, GETDATE())

30일보다 오래된 행을 삭제합니다.

SELECT * FROM TABLE_NAME where timestampString <= now() - interval 30 DAY;

언급URL : https://stackoverflow.com/questions/4364913/delete-rows-with-date-older-than-30-days-with-sql-server-query

반응형