我在数据库的产品表中有有效期和生产日期(数据类型DATE),我想应用以下公式来获得所需的结果:
SELECT * FROM products WHERE (RecentDate - expiry / manufacturing - expiry) * 100 > = 70;
它将显示使用寿命超过70%的产品。
如何设计针对此任务的查询(我正在使用Derby)。
我尝试了这个但没有成功
SELECT * FROM PRODUCTS WHERE ({fn TIMESTAMPDIFF(SQL_TSI_DAY, CURRENT_TIMESTAMP, EXPIRY)} / {fn TIMESTAMPDIFF(SQL_TSI_DAY, MDATE, EXPIRY )}) * 100 > 70;
这两个timestampdiff的除法为0。我不知道为什么?
经过数小时的游玩,我整理了查询条件。感谢所有帮助我完成工作的人! 这里是:
从转换为({fn TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,CURRENT_TIMESTAMP)}的产品中选择EXPIRY,MDATE作为两倍)/ cast({fn TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,EXPIRY)}为DOUBLE)* 100> 70;
解决的办法是将TIMESTAMPDIFF强制转换为DOUBLE。如果不进行强制转换,它无法计算百分比..为什么我也不确定。但是有些方法对我有用。任何有知识的人都请分享。干杯!