2009-11-03 5 views
1

특정 날짜 동안 데이터베이스에서 레코드를 가져 오는 데 문제가 있습니다. 이 순간이 SQL 명령 :MS 액세스 SELECT 및 WHERE

SELECT * FROM ict1 WHERE date='26/03/1992' 

내 데이터베이스에서 하나의 레코드를 반환해야합니다. "날짜"는 열이고 레코드 중 하나는 '26/03/1992 '값으로 사용됩니다. db 연결을 테스트 한 결과 다음을 사용할 수 있습니다.

SELECT * from ict1 

그래서 나는 그렇지 않다는 것을 알고 있습니다. 아마도 SQL 문법이 많이 달라졌 기 때문에 MySQL에 익숙합니다. @)

.NET을 OleDbConnection과 함께 사용하고 있다고 언급해야 할 것입니다.

감사합니다.

+0

날짜 컬럼의 유형은 무엇입니까? 테이블 *의 액세스 날짜 *에있는 날짜 열의 유형은 무엇입니까? – Murph

+0

두 답변에 댓글을 달았습니다. – Fionnuala

답변

0

사용 YYYY/MM/DD 형식으로 날짜 :

SELECT * FROM ict1 WHERE date='1992/03/26'

SELECT * FROM ict1 WHERE date=#1992/03/26#

+1

Access에서 날짜 구분 기호는 따옴표가 아니라 해시입니다. – Fionnuala

+0

Duly 지적. 감사. –

4

보통 날짜는 다음

Select * from ict1 where date= #03/26/1992# 

같은 액세스로 포맷해야 #은 액세스 할 수있는 날짜를 나타냅니다. '10/03/1992 '형식의 날짜는 3 월 10 일 또는 10 월 3 일을 의미 할 수 있으므로 매우 신중해야합니다.

또한 # 1992/3월 26일 # 또한

+0

yyyy/mm/dd를 사용하는 것이 훨씬 안전합니다. 왜냐하면 사용자의 로케일에 상관없이 Access와 사용자 모두에게 모호하지 않기 때문입니다. – Fionnuala

+0

@Remou - 나는 흥분한다. 나는 전에 날짜의 형식에 의해 붙잡 혔다. –

+0

ISO 형식은 특정 컨텍스트 (비록이 항목이 아님)에서 액세스가 끊어 지므로 일반적으로 "d-mmm-yyyy"또는 숫자 대신 문자로 철자가 지정된 형식을 사용하는 것이 좋습니다. 솔직히, 나는 처음부터 Format()을 사용하는 실수라고 생각하고 대신 DateSerial()을 사용하여 날짜를 전달합니다. DateSerial()은 결코 잘못 될 수 없습니다. 물론,이 컨텍스트 에서처럼 OLEDB를 통해 작동하지 않습니다. –

0

당신은 대신 날짜 = # XXXX/XX/XX #의 날짜 비교 기능을 사용할 수 있습니다 작동합니다. 날짜 비교는 형식 및 데이터 형식 문제로 인해 예상 결과를 얻지 못합니다. SQL Server에서 날짜는 datetime 또는 날짜 데이터 형식으로 저장 될 수 있습니다. 동일한 유형 및 형식으로 항목을 비교하는지 확인해야합니다.

참조 DateDiff ("D", # 1992년에서 1903년까지/(26) #, 날짜) = 0