原问题没有任何人能回答出来,现在换个简单点的sql语句问,如果还是没人能回答出来散分算了. ( 积分: 200 )

F

fenian

Unregistered / Unconfirmed
GUEST, unregistred user!
新问题(2005-08-12):
这样的数据:
dno maxoccurtime maxrate
1001 2005-08-01 0.1
1001 2005-08-02 0.15
1002 2005-08-01 0.3
1003 2005-08-01 0.27
1003 2005-08-02 0.11

如何通过sql语句转换为:
dno maxoccurtime maxrate
1001 2005-08-02 0.15
1002 2005-08-01 0.3
1003 2005-08-01 0.27
====================================================================
主键(dno, maxoccurtime).
也就是说统计在某个时间段内的某个dno的最大maxrate.
 
新问题(2005-08-12):
这样的数据:
dno maxoccurtime maxrate
1001 2005-08-01 0.1
1001 2005-08-02 0.15
1002 2005-08-01 0.3
1003 2005-08-01 0.27
1003 2005-08-02 0.11

如何通过sql语句转换为:
dno maxoccurtime maxrate
1001 2005-08-02 0.15
1002 2005-08-01 0.3
1003 2005-08-01 0.27
====================================================================
主键(dno, maxoccurtime).
也就是说统计在某个时间段内的某个dno的最大maxrate.
 
Parameters.ParamByName('occurdate').Value := StrToDate('2005-08-22');
 
to xianguo:
这种方法早用过了,不行。
拜托大家不是很有把握的情况下先测试一下再回帖好吗?
 
这试你的代码了,,你的代码写的是没有错误,,
你定义的字段是不是不允许有重复的字段啊~~
你把字段都设置成允许为空的,你试试应该没有问题~这个好像和数据库连没有什么关系
 
字段设计肯定不会有问题的,有几个字段确实设置为不允许为空,但我想这个应该不影响性能吧
 
occurdate字段是什么类型?如果是日期型好象不行,我也遇到过,换成文本型就好了
 
occurdate 就是日期型字段,靠,db2不会这么烂吧??ibm ole db provider for db2 servers 和 odbc 的连接都有bug?
 
不清楚,你试下可以不?
 
你先看看DB2的日期格式是什么样的,然后你再写。
 
建议不要使用日期型字段 而直接使用字符型
日期型兼容性差 而且总有问题
你在生成插入语句时使用参数
而我一般都是直接生成SQL文插入
对于日期型 就是直接使用字符 一般来说 DMS 会自动转换
但是你如果设置为参数 而且类型不指定 不确定的因素就大多了
 
估计是日期格式原因;
将occurdate设为DATETIME型试试
Parameters.ParamByName('occurdate').AsdateTime := StrToDatetime('2005-08-22');
 
formatdatetime('',)
 
如果你不着急,我晚上回家帮你试,我家电脑上有DB2 V8
 
没做过DB2数据库的东东,但是ADO中的日期~~~试一下 #2005-08-04# 看看[:)]

继续观望中.
 
to delphiboy:
我不急,麻烦帮我试试,我现在用的是odbc连接,但是迟早是要换回ibm ole db provider for db2 servers 的,麻烦帮我看看,谢谢
 
Parameters.ParamByName('occurdate').AsDateTime :=formatDateTime('yyyy-mm-dd', '2005-08-22');
'yyyy-mm-dd'  设成你数据库格式。
 
??
formatDateTime是将DATATIME转字符;怎么能跟DATETIME匹配呢?
formatDateTime('yyyy-mm-dd', '2005-08-22'); 日期型参数调用也不对;
 
Parameters.ParamByName('occurdate').Value := '2005-08-22-00.00.00';
或者
Parameters.ParamByName('occurdate').Value := '08-22-05-00.00.00';
你先试一下将下面的数据查进去
Parameters.ParamByName('occurdate').Value := '08-08-08-00.00.00';
在看它的日期格式,我记得好像是:
mm-dd-yy-hh.nn.ss
dd-mm-yy-hh.nn.ss
 
一般来说是日期格式的问题,db2的文档里面应该有
 
顶部