Select ...
From Table
Where DateCol >= '20100303'
And DateCol < '20100314'
And DatePart(hh,DateCol) Between 18 And 23
나는 20100314와 비교할 때보다 적게 사용하므로, 2010-03-14 자정 전에 아무것도 반환하지 않습니다.
EDIT 당신이 AM이 아니라 AM이라고 말한 것을 깨달았습니다.
추가 SQL에서 "Foo> = DateA and Foo < = DateB"라는 문장이 "DateA와 DateB 간의 Foo"로 번역됩니다. 해당 진술의 두 번째 부분은 보다 작거나에서 DateB까지입니다. 검색어에서 자정까지 2010-03-13에 모든 것을 포함하고자합니다. 나는 내가 검색하고 싶을 때 값을보다 엄격하게 제한하여 검색을 수행한다.
시간과 관련하여 DatePart (hh, DateVal)는 24 시간 시계를 사용하여 시간을 반환합니다. 그래서 오후 6시는 실제로 18시입니다. 오후 6 시부 터 11시 사이에 간다면 우리는 18 시부 터 23시 사이에 정말로 원합니다.
추가 원본 솔루션에 작은 문제가 있음이 나에게 있습니다. 시스템은 11시 (예 : 오후 11시 01 분, 오후 11시 30 분, 오후 11시 50 분 등)에 시간이있는 값을 반환합니다.
Select ...
From Table
Where DateCol >= '20100303'
And DateCol < '20100314'
And DateAdd(day, -DateDiff(Day, 0, [DateCol]), [DateCol]) Between '18:00' And '23:00'
는 기본적으로,이 값의 날짜 부분을 제거하기 위해 참조 DateDiff 및 DateAdd 함수 기능을 사용하고 있는데 우리가 원하는 값에 대해 비교 : 여기에 그것을 해결할 다른 해결책이다.
당신은 사이의 구문 차이를 설명 할 수 귀하의 경우 문이 : 6 (22) 사이 ('2010-01-31'AND '2010-02-27'BETWEEN TimeOrdPlaced) AND (DATEPART (HH, TimeOrdPlaced)) 광산은 다른 날짜와 시간을 사용하는 구문을 사용하는 것보다 훨씬 높은 결과를 산출합니다. – Kylee
설명하기 위해 내 소식을 확장하는 것이 더 쉬웠다. – Thomas
고마워요! 그게 효과가있는 것처럼 보입니다. – Kylee