delphi与ORACLE中的日期型数据查询 ( 积分: 100 )

  • 主题发起人 主题发起人 miqi2000
  • 开始时间 开始时间
M

miqi2000

Unregistered / Unconfirmed
GUEST, unregistred user!
后台用ORACLE定义了一个日期型字段,现想通过DELPHI利用SQL语句查询大于该日期的数据,<br>SQL语句如何写?<br>select&nbsp;*&nbsp;from&nbsp;e_table&nbsp;where&nbsp;buy_date&nbsp;&gt;=&nbsp;'''+riqi+''';<br>这样写编译不出错,但运行后出错,正确的SQL语句写法是什么
 
select&nbsp;*&nbsp;from&nbsp;e_table&nbsp;where&nbsp;to_char(buy_date,''yyyy/mm/dd'')&gt;='+quotedstr(formatdatetime('yyyy/mm/dd',riqi));
 
自己解决了.写法如下,供大家参考<br>var<br>&nbsp;&nbsp;riqi&nbsp;:string;<br>'select&nbsp;*&nbsp;from&nbsp;e_table&nbsp;where&nbsp;buy_date&nbsp;&gt;=&nbsp;to_date('''+riqi+''',''yyyy-mm-dd&nbsp;hh24:mi:ss'')';
 
deardai:给50分,另50分给解决以下的朋友.<br>上面的问题解决了,现又出现了一个异常:<br>在用户界面计算的数值结果都正确,比如结果是29.21,利用ORACLE的存储过程将该数据存入ORACLE中的NUMERIC(10,2)字段,存完后再利用DBGRID显示数据发现数据变成了29.20,并不是所有数据发生了这样的变化,而是个别数据,不知道是何原因,有人能解释一下吗?<br>出现这类问题该如何处理呢?
 
和数据库引擎有关系的,你用的是不是BDE啊,解决办法就是从数据库读出来后转成字符串,再在字符串后面补一个1即可<br>fieldByName(&quot;&quot;).AsString+&quot;1&quot;
 
用depart()应该可以吧
 
可能四舍五入的规则不一样,可以直接在Delphi中将起保留两位小数后传入,这样精确度和Oracle的相同,Oracle就不会再进行四舍五入操作,如将数字转化为Format('%.2f',[f])<br>在Access数据库中保存一个小数(如1.21),查看一下存储的的数据,都是类似1.2099998这样的德行.
 
如果是SQL中计算时候要round一下,千万注意是先加减乘除后再作处理。
 
后退
顶部