小编典典

在查询中处理德比中的日期

sql

我在数据库的产品表中有有效期和生产日期(数据类型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。我不知道为什么?


阅读 141

收藏
2021-05-16

共1个答案

小编典典

经过数小时的游玩,我整理了查询条件。感谢所有帮助我完成工作的人!
这里是:

从转换为({fn
TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,CURRENT_TIMESTAMP)}的产品中选择EXPIRY,MDATE作为两倍)/
cast({fn TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,EXPIRY)}为DOUBLE)* 100> 70;

解决的办法是将TIMESTAMPDIFF强制转换为DOUBLE。如果不进行强制转换,它无法计算百分比..为什么我也不确定。但是有些方法对我有用。任何有知识的人都请分享。干杯!

2021-05-16