前置信息:项目中使用H2数据库代替Oracle在开发与编译阶段进行测试,测试中有对八小时前数据的查询需求。
在oracle中使用 sysdate-8/24可以获得8小时前的时间,在H2环境的单体测试中,sysdate-8/24作为条件,总是过滤了应该查询出的结果。检查后发现,运行语句后,返回的时间是没有减去8小时的。后期查询资料时发现有个回复说H2支持Oracle的时间运算符,但是计算结果为整数,在另一篇资料(http://www.nazmulhuda.info/use-of-sysdate-in-oracle)中得知,oracle中一小时对应的值为0.041……,最终定位问题为8/24计算结果被H2数据库视为0,解决方案只要写为8.0/24即可解决问题。