0

さて、私はstackoverflowに関する他の多くの投稿をチェックして、これがどこかに言及されているかどうかを確認しましたが、提供された回答は私には意味がありません..

Oracle SQL Developerを使用して、私がやりたいことは次のとおりです。

-purch_date からエントリを取得します

- 現在の年のpurch_dateとクリスマスの違いをDAYSで取得します

* *そのため、'2012' をハードコーディングすることはできません。私はそれを取得する必要があります。

MySQL で 100% 機能するクエリは次のとおりです。

SELECT purch_id AS PURCH_ID, 
DATEDIFF(CONCAT(YEAR(NOW()),'-12-25'), purch_date) AS DAYS_TO_CHRISTMAS
FROM CS260USER.candy_purchase;

ほとんどの場合、Oracle で作業するにはそれが必要です。

誰でもこれで私を助けることができますか?

大変感謝します!

-マシュー

4

2 に答える 2

2

purch_dateとして定義されていると仮定すると、DATE

SELECT purch_id,
       (trunc(sysdate, 'YYYY') +
         interval '11' month +
         interval '24' day) -
        purch_date days_to_christmas
  FROM CS260USER.candy_purchase;

いくつかのメモ

  1. 時間要素がある場合purch_dateは、日付減算の結果を切り捨てることができます。
  2. このクエリを 12 月 26 日から 12 月 31 日の間に実行すると、来年のクリスマスではなく、今年のクリスマス (過去の日付) が表示されます。purch_dateたとえば、12 月 30 日の場合、最後のクリスマスまでの 5 日ではなく、次のクリスマスまでの 360 日の結果が必要になると思います。
于 2012-09-17T04:18:10.053 に答える
0

これを行う最も簡単な方法は、mysql で DATEDIFF のような関数を oracle で記述することです。id は次のように実行されます。

function        datediff( p_what in varchar2, p_d1 in date, p_d2 in date) return number as  l_result    number; 
BEGIN
      select (p_d2-p_d1) * 
             decode( upper(p_what), 'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL ) 
       into l_result from dual; 

      return l_result; 

END;

この関数を次のように呼び出します。

DATEDIFF('YYYY-MM-DD', SYSTIMESTAMP, SYSTIMESTAMP)

あなたのSQLコマンドで

于 2014-10-21T06:28:39.683 に答える