Формирование Sql-запроса с заданием интервала дат
TRY
{
base.Open("Calls");
CRecordset recset( &base );
sSql = "SELECT date,time,number,duration FROM Calls";
sSql+=" WHERE date BETWEEN '2005-05-31' AND '2005-06-01' ";
sSql+=" GROUP BY date,time,number,duration";
recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
while( !recset.IsEOF())
{
recset.GetFieldValue("date",date);
recset.GetFieldValue("time",time);
recset.GetFieldValue("number",number); recset.GetFieldValue("duration",duration);
recset.MoveNext();
}
recset.Close();
base.Close();
}
CATCH(CDBException, e)
{
CDialog errorDatabase;
errorDatabase.MessageBox("Ошибка базы данных:"+e->m_strError,"Критическая ошибка",MB_OK|MB_ICONERROR);
}
END_CATCH;
При выполнении такого запроса выскакивает сообщение "Ошибка базы данных: Operator/operand type mismatch". Подозреваю, что поле типа "дата" нужно как-то иначе обрабатывать. Подскажите, как?
Цитата:
Originally posted by shupik
Подозреваю, что поле типа "дата" нужно как-то иначе обрабатывать.
Подозреваю, что поле типа "дата" нужно как-то иначе обрабатывать.
Вот интересно, почему программисты с завидным упорством продолжают пытаться что-то "обрабатывать", и совершенно упускают параметры. А ведь основное назначение параметров - не париться с типами.
...
WHERE date BETWEEN CTOD('2005-05-31') AND CTOD('2005-06-01')";
Цитата:
Originally posted by Freeman
Вот интересно, почему программисты с завидным упорством продолжают пытаться что-то "обрабатывать", и совершенно упускают параметры. А ведь основное назначение параметров - не париться с типами.
Вот интересно, почему программисты с завидным упорством продолжают пытаться что-то "обрабатывать", и совершенно упускают параметры. А ведь основное назначение параметров - не париться с типами.
И каким образом их сюда ввернуть?
Цитата:
Originally posted by Mоngооsе
Кроме параметров, можно
...
WHERE date BETWEEN CTOD('2005-05-31') AND CTOD('2005-06-01')";
Кроме параметров, можно
...
WHERE date BETWEEN CTOD('2005-05-31') AND CTOD('2005-06-01')";
Что-то не работает такой вариант... Не возвращает ни одного значения почему-то.
Цитата:
Originally posted by shupik
Что-то не работает такой вариант... Не возвращает ни одного значения почему-то.
Что-то не работает такой вариант... Не возвращает ни одного значения почему-то.
WHERE date BETWEEN CTOD('05-31-2005') AND CTOD('06-01-2005')";
Цитата:
Originally posted by Mоngооsе
WHERE date BETWEEN CTOD('05-31-2005') AND CTOD('06-01-2005')";
WHERE date BETWEEN CTOD('05-31-2005') AND CTOD('06-01-2005')";
Всем спасибо, это я затупил. Дату не в том формате набрал. :D