簡體   English   中英

2個日期Oracle SQL之間的天數差異

[英]Difference in days between 2 dates Oracle SQL

好吧,所以我在stackoverflow上檢查了很多其他帖子,看看是否在任何地方都提到過這個帖子,並且提供的答案對我來說沒有意義......我在想他們正在談論完全不同的事情。

以下是我想要做的事情,使用Oracle SQL Developer:

- 從purch_date中檢索條目

- 獲取當前年份的purch_date和聖誕節之間的差異

* *所以,因此'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工作。

誰能幫我這個?

非常感謝!

-馬修

假設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日,我想要的結果是在下一個聖誕節前360天,而不是直到最后一個聖誕節的-5天。

最簡單的方法是在oracle中編寫一個像DATEDIFF一樣的函數,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命令中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM