在RPGLE程序中使用嵌入式SQL更新文件中的日期/时间字段时,我可以使用const myComponent = ({ dataA, deleteOp }) => {
return <button onClick={() => deleteOp(dataA.title)}>delete</button>
}
const mapStateToProps = state => ({ dataA: state.reducerA }); // this works fine
// data seems to be distributed properly
export default connect(mapStateToProps, { deleteOp })(myComponent);
/ CURRENT_DATE
或将当前日期/时间值存储到主机变量中。并使用此主机进行分配。
现在我想知道哪种方法更快?还是无关紧要的?
CURRENT_TIME
或
exec sql
update testpf
set t1date = CURRENT_DATE, t1time = CURRENT_TIME
where t1key = someValue;
注意:这都是“即时”写的!但我希望你明白我的意思
编辑:为澄清起见,目标不是仅更新一行,而是要进行多次更新。就像拥有带有发票位置和状态字段的数据库一样。该状态字段具有3个neigbour字段,这些字段跟踪用户在哪一天的哪个时间对其进行更改。就我而言,可能有数百个位置需要更新时间和日期。
答案 0 :(得分:1)
如果要使用CURRENT_DATE
和CURRENT_TIME
寄存器,我希望最好只在需要它们的SQL语句中使用它们。您的第二个示例涉及对数据库的三个请求,而第一个示例仅涉及一个。因此,我怀疑前者的性能会更好,因为这三者的开销都相同(但是要获得此寄存器),但后者的调用开销却是前者的三倍。
另外,第一个只是更易于阅读(最重要的考虑因素,IMO,除非不是)。也就是说,如果您不需要的话,则无需进行优化。当然,如果我想在RPG中检索当前日期和时间,我不会使用SQL来执行,而是使用%date()
或%time()
;-)< / p>
编辑:
这里有一些非性能方面的考虑。如果要在所有更新的所有行上使用相同的日期/时间,则必须提前捕获日期和时间。如果您需要更新的实际日期和时间,则需要使用寄存器。 SQL要做的一件好事是,如果您在单个SQL语句中多次使用CURRENT_DATE
,CURRENT_TIME
或CURRENT_TIMESTAMP
或这些的某种混合,则所有更新的行将具有相同的给定执行语句的日期,时间和时间戳。
答案 1 :(得分:1)
我的两分钱。您是否知道IBM i上的行更改时间戳记列?它们在https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/sqlp/rbafysqlprcts.htm中有描述吗?
通过在每次插入或更新行时保留一个自动维护的timestamp列,它们可以为您节省很多代码。另一方面,仅时间戳列支持,而日期和时间分开的列不支持。
答案 2 :(得分:1)
我个人会使用第一个选项。代码更简单,我无法想象会有明显的性能差异。
我唯一选择使用第二个选项的是日期有时可能不是系统日期(例如UDATE)。