2016-06-19 1 views
0

필드에 생년월일을 저장하는 테이블이 있습니다. DateValueOf. 사용자가 날짜를 입력 할 수있는 쿼리를 만들고 있는데 해당 쿼리는 해당 날짜에 생일을 가진 고객을 반환합니다.날짜 - 액세스의 기준 식에서 데이터 형식이 일치하지 않습니다.

올해 들어 모든 연도를 DateValueOf 년으로 변환하려고합니다.

eg > #13-10-1996# to #13-10-2016# 
eg > #13-10-2001# to #13-10-2016# 

그러면 날짜 선택 도구에서 날짜를 선택하고 아래 쿼리를 실행하도록 사용자에게 요청합니다.

SELECT CustomerID 
WHERE FormatDateTime(DateValue(DateSerial(Year(Date()),Month([DateValueOf]),Day([DateValueOf]))),2) >= #13-10-2016# 

는 그러나이 SQL 문은 data type mismatch in criteria expression

내 실수를 강조하시기 바랍니다 오류를 생성합니다. 미리 감사드립니다. 저는 오늘 생일 인 사람을 얻는 다른 방법도 열어두고 있습니다. 단지 날짜 비교를 사용하여 날짜를 포맷 대해 걱정하지 마십시오

답변

2

을 (를 호출 : myDatePicker)를 오늘 날짜는 기능 Date()에 의해 반환 는 관련이 없습니다.
그리고 나이를 원하지 않는 한 Year()도 관련이 없습니다. 이 생일에 고객의 연령을 원하는 경우에

SELECT CustomerID 
FROM MyTableName 
WHERE Month(myDatePicker) = Month([DateValueOf]) AND Day([DateValueOf]) = Day([myDatePicker]) 

, 당신은 SELECT 절에 계산을 추가 할 수 있습니다 : 나는 당신의 제안을 시도,하지만 여전히 오류가

SELECT CustomerID, Year(myDatePicker) - Year(DateValueOf) As CustomerAge 
FROM MyTableName 
WHERE Month(myDatePicker) = Month([DateValueOf]) AND Day([DateValueOf]) Day([myDatePicker]) 
+0

좋은 제안. 내 프로젝트에서 솔루션을 구현했습니다. 감사 –

1

: 당신이 날짜 선택 컨트롤에서 날짜를받을 가정

SELECT CustomerID 
WHERE DateSerial(Year(Date()),Month([DateValueOf]),Day([DateValueOf])) 
    >= #13-10-2016# 
+0

. 많은 연구와 시행 착오 끝에, 어떤 경우에는'DateValueOf' 필드가 비어 있기 때문에'조건식에 데이터 유형 불일치 '가 발생한다는 것을 알게되었습니다. 어떻게 관리하나요? –

관련 문제