我的表格为PRODUCTINFO
:
Column name : product_name | launch_date
Sample Date : product1 2017-01-20
我需要一个SQL查询来判断产品是否是新推出的。
业务规则:
if (launch_date - currentdate < 0 && currentdate - launch_date < 90)
newly_launched = 'YES'
else
newly_launched = 'NO'
其中currentdate是今天的日期。
我想要的SQL查询就像:
SELECT launch_date, X as newly_launched
FROM PRODUCTINFO
WHERE product_name = 'product1'
我无法弄清楚&#39; X&#39;在我查询所需的结果。
我面临的问题是在我的查询中使用currentdate和if else阻止
请帮忙。
使用以下查询在DB2中获取currentdate的一种方法:
SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD')
FROM SYSIBM.SYSDUMMY1
仍然不确定如何在我的if else场景中使用它。
回答here不能解决我的问题,因为这种情况是基于if的。
答案 0 :(得分:1)
使用TIMESTAMPDIFF,其中16为第一个参数,用于2个时间戳之间的计数天数,详细信息请参见here
试试这个
select launch_date,
case when TIMESTAMPDIFF( 16, cast(cast(launch_date as timestamp) - current timestamp as char(22))) >0 and
TIMESTAMPDIFF( 16, cast(cast(launch_date as timestamp) - current timestamp as char(22))) <90 then 'YES' else 'NO' end newly
from PRODUCTINFO
WHERE product_name = 'product1'
答案 1 :(得分:-1)
只需在case语法中使用datediff函数,我希望它可以提供帮助!
SELECT launch_date,
case
when DATEDIFF(day,launch_date,getdate()) BETWEEN 0 AND 90 then 'YES'
else 'NO'
end AS newly_launched
FROM PRODUCTINFO
WHERE product_name = 'product1'
如果您想要为所有记录执行此操作:
SELECT launch_date,
case
when DATEDIFF(day,launch_date,getdate()) BETWEEN 0 AND 90 then 'YES'
else 'NO'
end AS newly_launched
FROM PRODUCTINFO