Oracle数据源,其中一个表名为HSDATA,定义如下:INDEXID,INTEGER类型;
TIMEPOINT,DATE类型,查询显示如2010-2-16 16:00:00;
DATVAL,NUMBER(15,5)。前两个是索引(id和时间)。我希望运行一个SQL语句,可以删除掉某一天中某一个小时的数据,如删除掉2010-2-16 16:00:00到2010-2-16 17:00:00这一个小时的数据,包括前者的时间点,不包括后者的时间点。请问这个完整的SQL语句应该怎样写呢?Oracle DATE类型的时间比较语句是否和其他的数据库有区别呢?事实上我是在VC++6.0平台下利用ODBC操作数据库。这里应用的是CDatabase类下的ExecuteSQL函数。
即类似于:
CDatabase m_db;
m_db.Open(NULL);
CString SQLsen = "........";
m_db.ExecuteSQL(SQLsen);
m_db.Close();希望大家帮帮忙,告诉我应该怎样写这个SQL语句,最好连C++代码也告知(如上),万分感激!!!!

解决方案 »

  1.   

    delete
      FROM HSDATAT
     WHERE TIMEPOINT BETWEEN
           TO_DATE('2010-2-16 16:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
           TO_DATE('2010-2-16 17:00:00', 'yyyy-mm-dd hh24:mi:ss')
    第一种包含'2010-2-16 17:00:00'
    下面的应该差不多
    delete FROM HSDATA T
     WHERE TIMEPOINT >=
           TO_DATE('2010-2-16 16:00:00', 'yyyy-mm-dd hh24:mi:ss') 
           AND
           TIMEPOINT <
           TO_DATE('2010-2-16 17:00:00', 'yyyy-mm-dd hh24:mi:ss')
      

  2.   

    delete from HSDATA where TIMEPOINT >= 开始时间点 and TIMEPOINT  < 结束时间点
      

  3.   

    你写的代码应该就可以,将此sql,拼成字符串,
    输出一下,将sql在数据库中执行一下。如果正常执行,你就成功了。
      

  4.   

    不好意思,看错了,你写的应该是vb的调用方法吧,VC不会
      

  5.   

    对了,时间两边一定要有“'”么?如果换成ACCESS的话是不是得改成“#”?