TYPE OF EXPRESSIONS MUST MATCH 是什么总题呢?

ttkk_28 2002-03-26 01:31:31
我在用编程的时候用到:
ls_synx的值是 rq='2002-03-10'
rq的类型是datatime
ls_dw.setfilter(ls_synx)
ls_dw.filter()
就出现的错误提示窗口:Type of Expressions Must Match
请问各位高手,我如何才能通过setfilter()通过日期条件过滤到我想要的数据呢!!

...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leexiaobao 2002-03-26
  • 打赏
  • 举报
回复
总之,类型一定要匹配,如果RQ数据类型为DATETIME, 则条件为RQ>DATE('2002-03-26') 或STRING(DATE, 'YYYY-MM-DD' ) > STRING( '2002-03-26', 'YYYY-MM-DD).
zhenghaiwei 2002-03-26
  • 打赏
  • 举报
回复
这个问题解决的方法很简单,在windows控制面板中选择“区域设置”把日期标签中的“短日期样式”改为"yyyy-mm-dd",就OK了.
ttkk_28 2002-03-26
  • 打赏
  • 举报
回复
两个时间段内的数据检索问题一直很麻烦。以下是我整理的方法。

一、数据窗解决:

定义两个datetime型参数,at_from,at_end,(开始,结束)
where 条件写成:
where col_date >= :at_from and col_date < :at_end
如,1997-12-12 到 2000-01-02
则检索时就这样处理:
datetime lt_from,lt_end
lt_from = datetime(date('1997-12-12),time('00:00:00'))
lt_end = datetime(date('2000-01-03',time('00:00:00')) //注意!加了一天
dw_xxx.retrieve(lt_from,lt_end)
这样检索出来的数据就是绝对符合条件的。

二、如果是数据窗过滤,就非常简单了:

ls_filter = &
' string(col_date,"yyyy-mm-dd") >="'+string(date1,'yyyy-mm-dd')+'" and string(col_date,"yyyy-mm-dd") <="'+string(date2,'yyyy-mm-dd')+'"'
dw_xxx.setfilter(ls_filter)
dw_xxx.filter()
dw_xxx.sort() // 按原始顺序排序。

三、如果是嵌入SQL语法的时间查询,则:
MSS sql Server,Sybase SYB,Sybase SQL Anywhere中
select * from table_xxx where
beg_time >= ('2000-08-15 12:20:25:000');
ORACLE中:
beg_time >= '15-9月-2000' ; // 奇怪的格式。

其他:
可以通过该RDBMS所带的 sql 工具来执行查询,select beg_time from xxx ,然后得出格式

konrong 2002-03-26
  • 打赏
  • 举报
回复
主要是RQ=‘’
日期=‘字符了,这样就类型不匹配了。
不要加引号

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧