0
[SQL Server 2008 SP3 실행]SQL Server : 작업 순서를 따르지 않습니까?
쿼리 결과가 smalldatetime
형식의 오버플로가 발생했습니다. 그러나 이것은 (이론적으로) 쿼리가 구조화 된 방식으로 인해 결코 발생하지 않아야합니다. 로직은 오버 플로우를 야기하는 DATEADD()
이 실행되기 훨씬 전에 진리 값을 알 수있게해야합니다. - 오드리의 (a smalldatetime
은) 다음은 smalldatetime으로 공간을 오버플로,> = 2014년 10월 1일 인 경우를 제외하고
TimeIn >= '1/8/1950' AND TimeIn < '1/9/1950' AND
DATEADD(week, DATEDIFF(week, '1/8/1950', '9/14/2014'), TimeIn) >= '9/14/2014'
이 잘 작동 :
다음은 WHERE 절의 관련 부분이다. 그런데 DATEADD()
이 실행되는 이유는 무엇입니까? 날짜가 10/1/14 인 경우 은이 실행되지 않아야합니다 ...하지만 그렇습니다.
내가 그 두려워 :이 약
내가 하드 코딩 문제가 날짜 쿼리를 실행할 때 실제로 오류가 표시되지 않습니다,하지만 한 가지 방법은
CASE
표현을 사용하는 것입니다. 이것에 대한 (n 우아한) 방법에 대한 제안? – Conrad실제로 문제가 무엇인지 모르겠다. 날짜가 '10/1/2014 '이후이지만 다음 명령이 잘 실행되는 것 같다고했다.'SELECT DATEADD (week, DATEDIFF (week, '1/8/1950 ', '2014 년 9 월 14 일)', '10/2/2014 ')' –
각 표현식 부분을 괄호로 묶어서 SQL에서 바로 가기를 시도 할 수는 있지만 옵티 마이저의 보장 방법은 없습니다 쿼리를 평가할 것입니다. – Sparky