이 질문에는 이미 답변이 있습니다.
DELETE from Table WHERE Date > GETDATE();
GETDATE ()에는 시간이 포함됩니다. 점점
2011-01-26 14:58:21.637
어떻게받을 수 있습니까?
2011-01-26 00:00:00.000
SQL Server에 약간의 바이어스
개요
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
SQL Server 2008에는date
그러나 유형. 그래서 그냥 사용하십시오.
CAST(GETDATE() AS DATE)
편집 : 하루를 추가하려면 "0"전날과 비교하십시오.
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
사이버 스키 :
2 가지 기능을 포함하지 않는 대안은 (괄호 안에 +1이있을 수 있습니다.)
DATEDIFF(DAY, 0, GETDATE() +1)
DateDiff
숫자를 반환하지만 모든 목적을 위해이 표현식을 VARCHAR로 직접 변환하는 것을 제외하고는이 표현식을 사용하려는 모든 위치에서 날짜로 작동합니다.이 경우 직접 CONVERT 방식을 GETDATE ()에 사용했을 것입니다.
convert(varchar, GETDATE() +1, 102)
SQL Server 2008의 경우 최상의 인덱스 방식은 다음과 같습니다.
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
이전 SQL Server 버전의 경우 날짜 계산은 varchar 로의 변환보다 빠르게 작동합니다. varchar로 변환조차도 지역 설정 때문에 잘못된 결과를 줄 수 있습니다.
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
참고 : 랩핑 할 필요는 없습니다.DATEDIFF
다른 사람과DATEADD
internally
비교할 때 숫자로 변환되므로 int로 그냥 두는 것이 좋습니다. - RichardTheKiwi
데이터베이스와 관련이 있습니다. 사용중인 데이터베이스 엔진을 지정하지 않았습니다.
예 : PostgreSQL에서는 (myvalue를 날짜로) 캐스트합니다.
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
당신이 사용할 수있는
DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
여기에 몇 가지 솔루션이 있습니다.)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
>=
오히려>
또는 실제로 2011-01-26 00 : 00 : 00.000 ... 인 레코드 삭제를 놓칠 수 있습니다. - Matt Gibsoncast(left(getdate(), 11) as datetime)
- Mohammad Anini