2017-01-26 4 views
0

私のテーブルには、PRODUCTINFO次のとおりです。データベースから派生列を取得する| SQLクエリ| DB2システム日付

Column name : product_name | launch_date 
Sample Date : product1  2017-01-20 

私は製品が新発売されているかどうかを決定するためにSQLクエリを必要とします。

ビジネスルール:CURRENTDATEは今日の日付です

if (launch_date - currentdate < 0 && currentdate - launch_date < 90) 
    newly_launched = 'YES' 
else 
    newly_launched = 'NO' 

。私はwittingい

SQLクエリは次のようである:

SELECT launch_date, X as newly_launched 
FROM PRODUCTINFO 
WHERE product_name = 'product1' 

私は望ましい結果のための私のクエリで「X」の適切な交換を把握することはできませんよ。私が直面しています

問題CURRENTDATEを使用していると私のクエリ内の他のブロックは

助けてくださいます。次のクエリを使用してDB2でCURRENTDATEを得るために

一つの方法:それでも

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

私の場合は、他のシナリオでこれを使用する方法がわかりません。

回答hereこのシナリオはif-elseベースであるため、私の問題は解決しません。

+1

あなたはMySQL、MS SQL ServerまたはDB2を使用していますか?関与していない製品にはタグを付けないでください。 – jarlh

+0

が削除されました。MySQL、MS SQLはデフォルトの推奨タグです –

+0

素晴らしい! (これらのタグの提案は、多くの矛盾したタグ付けを引き起こします...) – jarlh

答えて

-1

単純にケース構文で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 
+0

エラー:DB2 SQLエラー:SQLCODE = -206、SQLSTATE = 42703、SQLERRMC = DAY、DRIVER = 3.61.86 SQLState:42703 エラーコード:-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用で、include 0と90の値の間に> 0が必要です – Esperento57

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

この行について説明してください: '16、cast (cast(launch_date as timestamp) - 現在のタイムスタンプはchar(22)) ' –

+0

16です。しかし残っている? –

+0

ここを見てくださいhttp://www.volubis.fr/bonus/sql_memo.htm – Esperento57

関連する問題