2017-01-26 60 views
0

我的表是PRODUCTINFO從數據庫|獲取派生列SQL查詢| DB2 SystemDate

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' 

我不能在我的查詢需要的結果找出正確的替換「X」的。我對着

問題是使用的currentdate,如果我的查詢else塊

請幫助。

一種方法使用以下查詢來獲取DB2中的currentdate:

SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') 
FROM SYSIBM.SYSDUMMY1 

仍然不知道如何用我的if else場景中使用此。

回答here不能解決我的問題,因爲這種情況是基於其他情況。

+1

你使用的是MySQL,MS SQL Server還是DB2?不要標記不涉及的產品。 – jarlh

+0

刪除MySQL,MS SQL他們默認推薦標籤 –

+0

太棒了! (這些標籤建議導致很多不一致的標籤......) – jarlh

回答

-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' 

的情況下,要做到這一點對所有的記錄:用16

SELECT launch_date, 
     case 
      when DATEDIFF(day,launch_date,getdate()) BETWEEN 0 AND 90 then 'YES' 
      else 'NO' 
      end AS newly_launched 
FROM PRODUCTINFO 
+0

獲取錯誤:DB2 SQL錯誤:SQLCODE = -206,SQLSTATE = 42703,SQLERRMC = DAY,DRIVER = 3.61.86 SQLState:42703 ErrorCode:-206 錯誤:DB2 SQL錯誤:SQLCODE = -727,SQLSTATE = 56098,SQLERRMC = 2; -206 ; 42703; DAY,DRIVER = 3.61。86 SQLState:56098 ErrorCode:-727 –

+0

在DB2上無法正常工作,datediff是針對sql server的,並且他希望> 0,包括0和90之間的值也可以 – Esperento57

1

使用TIMESTAMPDIFF作爲第一個參數的數天數的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' 
+0

請您解釋這一行: 16, (cast(launch_date as timestamp) - 當前時間戳爲char(22))' –

+0

16是Days。但剩下? –

+0

看這裏http://www.volubis.fr/bonus/sql_memo.htm – Esperento57