在查询中处理德比中的日期
handling dates in derby within query
我在数据库中的产品 table 中有有效期和生产日期(数据类型 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.I不知道为什么?
下面的想法:
select * from products
where
convert(float,DATEDIFF(dd,manufacturing,GETDATE()))/convert(float,DATEDIFF(dd,manufacturing,expiry))*100 > = 70;
玩了几个小时后,我整理了 query.Thanks 给所有帮助过我的人!
这是:
SELECT EXPIRY,MDATE FROM PRODUCTS WHERE cast( {fn TIMESTAMPDIFF( SQL_TSI_DAY,MDATE,CURRENT_TIMESTAMP)} as double) /cast( {fn TIMESTAMPDIFF( SQL_TSI_DAY,MDATE,EXPIRY )} as DOUBLE)*100 > 70 ;
解决方案是将 TIMESTAMPDIFF 投射为 DOUBLE.With 投射,它无法计算百分比..为什么,我也不是 sure.But 一些它是如何工作的 me.Any有知识的请做share.Cheers!
我在数据库中的产品 table 中有有效期和生产日期(数据类型 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.I不知道为什么?
下面的想法:
select * from products
where
convert(float,DATEDIFF(dd,manufacturing,GETDATE()))/convert(float,DATEDIFF(dd,manufacturing,expiry))*100 > = 70;
玩了几个小时后,我整理了 query.Thanks 给所有帮助过我的人!
这是:
SELECT EXPIRY,MDATE FROM PRODUCTS WHERE cast( {fn TIMESTAMPDIFF( SQL_TSI_DAY,MDATE,CURRENT_TIMESTAMP)} as double) /cast( {fn TIMESTAMPDIFF( SQL_TSI_DAY,MDATE,EXPIRY )} as DOUBLE)*100 > 70 ;
解决方案是将 TIMESTAMPDIFF 投射为 DOUBLE.With 投射,它无法计算百分比..为什么,我也不是 sure.But 一些它是如何工作的 me.Any有知识的请做share.Cheers!