값은

2012-02-22 3 views
0

은 시작일과 종료일 사이에있을 것입니다 주어진 날짜의 양을 선택해야합니다 날짜 시간으로 MS 액세스 쿼리에서 가져 오는 중 오류하지값은

나에 대한 작업을 잘 내가 사용 2012년 2월 27일을 '하고 '또는'2012년 2월 28일 '

만에

는'2012-02-29 '의이 쿼리는 무엇인지에 가까운 수 있습니다 궁금 양

select amount from tblPricePeriod where cdate(2/1/2012) <=cdate('2/29/2012 12:00:00 AM') 
and cdate(2/29/2012) >= cdate('2/29/2012 12:00:00 AM') 

tblpriceperiod

+3

는 그 * 정확히 * 당신은 무엇입니까? 'cdate (2/1/2012)'는'00 : 01 : 26'을주는 날짜에'2/1/2012'의 부분을 캐스트 한 것입니다 (따옴표가 없으므로). 'cdate ('2/29/2012 12:00:00 AM') 대신'# 2/29/2012 12:00:00 AM #'을 사용할 수 있습니다. –

+0

그 SQL 문에서 열 참조, cdate는 변환 함수이지만 테이블의 필드가 아닌 유형이 지정된 값에 대해 실행 한 경우이 쿼리는 아무 것도 의미하지 않습니다. 질문을 명확히 할 수 있습니까? –

답변

2

을 선택하지필요.

PARAMETERS WhichDate DateTime; 
SELECT amount 
FROM tblPricePeriod 
WHERE 
     [WhichDate] >= StartDate 
    AND [WhichDate] <= EndDate; 

당신이 매개 변수 쿼리로 그것을 대신 리터럴 날짜 값으로 쿼리를 작성,이 같은 그것을 시도하지 않으려면 ...

SELECT amount 
FROM tblPricePeriod 
WHERE 
     #2012-02-29# >= StartDate 
    AND #2012-02-29# <= EndDate; 

또 다른 옵션이 될 것이다 WHERE 절에서 BETWEEN 식을 사용합니다.

SELECT amount 
FROM tblPricePeriod 
WHERE #2012-02-29# BETWEEN StartDate AND EndDate; 

이러한 제안은 StartDate와 EndDate가 모두 날짜/시간 데이터 유형이라고 가정합니다. 텍스트 데이터 형식 인 경우 해당 CDate() 함수를 사용하여 쿼리에서 해당 날짜를 사용할 수 있습니다. 당신의 STARTDATE 및 종료 날짜 값이 자정 이외의 시간 구성 요소를 포함하는 경우

CDate(StartDate) 
CDate(EndDate) 

또한 상황은 더 복잡 할 수 있습니다. 그러나 DateValue() 함수를 사용하여 해당 날짜/시간 값을 같은 날 자정에 전송할 수 있습니다.

DateValue(StartDate) 
DateValue(EndDate) 

또는

DateValue(CDate(StartDate)) 
DateValue(CDate(EndDate))