我在数据库的产品表中有到期日和生产日期(数据类型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.我不知道为什么?
答案 0 :(得分:0)
以下想法:
select * from products
where
convert(float,DATEDIFF(dd,manufacturing,GETDATE()))/convert(float,DATEDIFF(dd,manufacturing,expiry))*100 > = 70;
答案 1 :(得分:0)
经过几个小时的游戏,我整理了一下这个问题。谢谢所有帮助过我的人!这里是:
SELECT EXPIRY,MDATE FROM PRODUCTS in where({fn TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,CURRENT_TIMESTAMP)}为double)/ cast({fn TIMESTAMPDIFF(SQL_TSI_DAY,MDATE,EXPIRY)}为DOUBLE)* 100> 70;
解决方案是将TIMESTAMPDIFF转换为DOUBLE.With out cast,它无法计算百分比..为什么,我也不确定。但是有些它对我有用。任何有知识的人,请分享。干杯!