用日期时间作条件查询数据(FOXPRO的库)(200分)

  • 主题发起人 主题发起人 kanny_chen
  • 开始时间 开始时间
K

kanny_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在需要统计别人以前做的FOXPRO库的内容,用一个日期时间作条件来查询
可气的是它的结构不合理,如下结构
字段名:DATE 字段名:TIME
类型:DATE 类型:CHARACTER
长度:8 长度:5

PHONE TYPE TELTO DATE TIME NOTE
3302 1 13980803451 2002-10-30 13:25 NO
3309 1 66893256 2002-10-31 09:33 YES

我现在如用一个日期时间做条件的话就查不出来,只用日期条件和DATE字段比较
到是可以,想加上时间就不晓得如何办了,用CONVERT转换也没成功
 
SELECT * FROM T_Table
WHERE CAST(CAST(DATE as CHAR(10)+' '+Time+':00') AS DATETIME)
='12/25/2002 20:00:00'
 
不行的话转换一下表,转换为datetiem型
 
我是在ODBC中建立的一个连接,数据源是:Visual FoxPro Tables,然后指向DBF目录的,
在DELPHI中用的ADOCONNECT和ADOQUERY组件操作的。
to delphland:
你的办法我试了一下,不晓得为什么,我仔细检查了的,但它老是提示说我用的函数缺少
一个括号。运行是提示:[ODBC VISUAL FOXPRO DRIVER]FUNCTION NAME IS MISSING )

现在这个库以前的老程序还在用的,又改不到它的结构。
 
//实在不行就日期和时间分开比较

l_SQL := 'SELECT * FROM T_Table WHERE DATE = '''+FomatDateTime('YYYY-MM-DD',vDateTime)+''' ';
l_SQL := l_SQL + ' AND TIME = '''+FomatDateTime('HH:MM',vDateTime)+''' ';
 
是少了一个
SELECT * FROM T_Table
WHERE CAST((CAST(DATE as CHAR(10))+' '+Time+':00') AS DATETIME)
='12/25/2002 20:00:00'
 
这很简单。[:)]建议新增一个字段,日期时间型,将日期字段用dtos()函数转换为string,然后和time字段相加,然后用repl语名替换新增加了字段。注意要将新串转成日期时间型。具体语法你参考一下VFP的帮助。
 
不行是报少一个括号,数据结构又不能改,因为老的DOS程序还要继续写数据进切的。
各位再想想办法。
 
后退
顶部