我有一个无法解决的奇怪问题。
我正在尝试删除时间戳超过 1 小时的所有行。
SQL:
DELETE FROM TABLE WHERE TIMESTAMP <= SYSTIMESTAMP - 1/24
整个代码在 SQL Developer 中完美运行,但是当我尝试在 iBatis.net 中执行相同操作时,我遇到了超时。
<statements>
<delete id="DeleteRows" parameterClass="int">
<![CDATA[
DELETE FROM TABLE WHERE TIMESTAMP <= SYSTIMESTAMP - #VALUE#/24
<!--THIS DON'T WORK-->
]]>
</delete>
</statements>
另一个奇怪的事情是,当我将小于运算符挂到“等于”时,问题就不存在了,例如
<statements>
<delete id="DeleteRows" parameterClass="int">
<![CDATA[
DELETE FROM TABLE WHERE TIMESTAMP = SYSTIMESTAMP - #VALUE#/24
<!--THIS WORK-->
]]>
</delete>
</statements>
我只使用 Les-than 和 grater-than 运算符生成超时,并且仅在 iBatis.net 中生成。有谁知道为什么?
有趣的事实。当我查询DELETE FROM TABLE WHERE TIMESTAMP < '07-AUG-11'
它的工作。另外,当我尝试查询时DELETE FROM TABLE WHERE TIMESTAMP BETWEEN '07-AUG-11' AND SYSTIMESTAMP
,它也可以工作。似乎只有与组合在一起才有问题<
是否>
有SYSTIMESTAMP
其他方法可以在不使用这些运算符的情况下删除超过一小时的行?谢谢