2012-03-23 6 views
0

where 절의 일부로 사용되는 SQL 데이터 계산을 사용하여 자정에 계산 된 날짜의 예약을 가져 왔습니다.where 절의 날짜 계산에 대한 T-SQL의 대체 방법

내 솔루션 :

bookDate >= (SELECT DATEADD(dd, -7, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))) 

원래했다 : 그것은 계산 된 날짜 + 현재 시간

에 반환 그러나

bookDate >= DATEADD(dd, -7, GETDATE()) 

이에 대한 대안 훨씬 간단한 방법이 있습니까?

+1

어떤 ** 버전 ** SQL의 섬기는 사람?? SQL Server 2008 이상에서는 날짜 전용 데이터 유형 인 DATE를 사용할 수 있습니다. –

+1

과 관련된 시간 부분은 없습니다.이 값은 1 회 계산되어 각 행에 적용되므로 중요하지 않습니다. –

+1

@KM. 물론 중요합니다. 상관 없어도 중요합니다. 질문을하는 사람들은 종종 중요한지 여부를 판단 할 수 없습니다. –

답변

1

조금 더 간단합니다. SQL Server 2008 및 SQL 서버 2012 년

bookDate >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()) - 7, 0) 

당신은 date 데이터 형식을 사용할 수 있습니다.

bookDate >= DATEADD(dd, -7, CAST(GETDATE() as DATE)) 
0

다음은 2005 작동합니다

SELECT DATEADD(dd, -7, FLOOR(CAST(GETDATE() AS FLOAT))) 

이 (창은 그 문제 등) 수를 나타내는 정수와 부동 소수점으로 날짜를 저장하는 SQL 서버 때문에 작동 일수는 01/01/1900이며, 분수 부분은 시간을 나타냅니다. 때문에의 다양한 수의, 당신은 (즉, 월, 년) 일이 아닌 다른 뭔가를 계산하는 경우

SELECT FLOOR(CAST(GETDATE() AS FLOAT) -7) 

DATEADD 유용 : 다음은 짧은, 나는 보통이 상황에서 무엇을 사용과 더 일치 요일은 각각 한 달 또는 한 달입니다. 일로 작업 할 때 종종 직접 더하거나 빼는 것이 더 쉽습니다. 당신은 빼기 원한다면 마찬가지로, 예를 들어, 일로부터 2 시간, 당신은 사용할 수 있습니다

SELECT CAST(GETDATE() AS FLOAT) * 2.0/24.0 
0

을 또한 같이 그것을 할 수 :

bookDate >= CAST(CONVERT(char(8), GETDATE() ,112) as datetime)