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
'programing' 카테고리의 다른 글
Excel의 워크시트 암호 보호 작동 방식 (0) | 2023.06.19 |
---|---|
스프링 부트 + 유레카 서버 + 하이스트릭스(터빈 포함): 빈 터빈.스트림 (0) | 2023.06.19 |
터미널의 Git commit이 VIM을 열지만 터미널로 돌아갈 수 없습니다. (0) | 2023.06.19 |
django의 model.save()가 full_clean()을 호출하지 않는 이유는 무엇입니까? (0) | 2023.06.09 |
PHP EXCEL에서 날짜 형식 읽기 (0) | 2023.06.09 |