|
다른 DB도 마찬가지지만 엑세스도 Date형으로 바꿔줘야 합니다.
Oracle은 TO_DATE지만 엑세스는 Format입니다.
예를 들어 '2005-01-01 00:00'이라면 Format ( '2005-01-01 00:00' , 'YYYY-MM-DD HH:NN' ) 이렇게 써주셔야합니다.
아래의 SQL을 Between을 풀어서 써보겠습니다.
SELECT TSDateTime, TSValue FROM TimeSeries
WHERE TSDateTime >= Format ( '2005-01-01 00:00' , 'YYYY-MM-DD HH:NN' ) AND
TSDateTime <= Format ( '2005-02-01 00:00' , 'YYYY-MM-DD HH:NN' )
일단 엑세스에서 SQL을 실행해보시고 이상이 없으시면 코딩하는게 낫을것 같습니다. ^^
초보자 님이 쓰신 글 :
: MS Access 데이터베이스 DateTime 필드에 "11/12/2003" 의 Data/Time format으로 날짜가 저장 되어 있습니다.
: 그리고 가령 11/12/2003~11/20/2003 사이의 정보를 TDBChart로 나타내려고 하고 있구요.
: 그런데 SQL에 문제가 있어 에러가 자꾸 생깁니다. 제 SQL문은 다음과 같습니다.
:
: AnsiString asStartDate = QueryPeriodForm->edtSMon->Text + "/";
: asStartDate += QueryPeriodForm->edtSDay->Text + "/";
: asStartDate += QueryPeriodForm->edtSYear->Text;
:
: AnsiString asEndDate = QueryPeriodForm->edtEMon->Text + "/";
: asEndDate += QueryPeriodForm->edtEDay->Text + "/";
: asEndDate += QueryPeriodForm->edtEYear->Text;
:
: if(STQuery->Active) STQuery->Close();
: STQuery->Connection = adoConnect;
: STQuery->SQL->Clear();
:
: STQuery->SQL->Add("SELECT TSDateTime, TSValue");
: STQuery->SQL->Add(" FROM TimeSeries");
: STQuery->SQL->Add(" WHERE TSDateTime BETWEEN '"+ asStartDate + "' AND '" + asEndDate + "'");
:
: STQuery->Open();
:
:
: 그런데 위와 같이 하니 다음의 에러가 자꾸 뜹니다.
: "Data type mismatch in criteria expression"
:
: 만약 BETWEEN '" -> BETWEEN" 등으로 '을 제거하면 에러는 없어지는데 Query에서 잡히는 게 아무것도 없어요.
: 혹 asStartDate or asEndDate를 TDate 포맷으로 바꿔줘야 하는 겁니까? 아니면 날짜포맷 **/**/****에 문제가 있는 건가요? 매뉴얼대로 했는데도 이런 에러가 자꾸 생겨 거의 돌 지경입니다.
: 제발 고수님들의 조언을 부탁드립니다.
|