문제
다음 중 각 쿼리문에 대한 설명으로 옳지 않은 것은?
① SELECT Weekday([출고일], 1) FROM 출고; → 출고일 필드의 날짜 값에서 요일을 나타내는 정수를 표시하며, 일요일을 1로 시작한다. ② SELECT DateDiff("d", [출고일], Date()) FROM 출고; → 출고일 필드의 날짜 값에서 오늘 날짜까지 경과한 일자 수를 표시한다. ③ SELECT DateAdd("y", 5, Date()) AS 날짜계산; → 오늘 날짜에서 5년을 더한 날짜를 표시한다. ④ SELECT * FROM 출고 WHERE Month([출고일])=9; → 출고일 필드의 날짜 값에서 9월에 해당하는 레코드들만 표시한다.
정답
3번
해설
정답: 3. DateAdd 함수에서 ‘y’는 연(year)이 아니라 ‘연중 일수(day of year)’를 의미한다. 따라서 DateAdd("y", 5, Date())는 오늘 날짜에 5일을 더한 값이다. 5년을 더하려면 간격 인수로 ‘yyyy’를 써야 한다.
오답 풀이
- 1번: Weekday(날짜, 1)은 요일을 정수로 반환하며 옵션 1은 일요일을 1로 시작하므로 옳다.
- 2번: DateDiff("d", 시작, 끝)은 두 날짜 사이의 일수를 반환하므로 옳다.
- 3번: ‘y’는 연이 아니라 일 단위이므로 5년을 더한다는 설명은 옳지 않다.
- 4번: Month(날짜)=9는 9월 레코드만 추출하므로 옳다.
보충 개념 DateAdd/DateDiff의 간격 인수: yyyy(연), q(분기), m(월), d(일), y(연중 일수), ww(주), h(시), n(분), s(초). ‘yyyy’와 ‘y’는 의미가 전혀 다르다.