我正在處理作業問題,我很接近但需要一些數據轉換的幫助。或SYSDATE - 起始日期計算時間戳和時間間隔:NUMTOYMINTERVAL SYSTDATE計算SQL查詢
的問題是:
使用EX架構,寫一個SELECT語句檢索來自Date_Sample表DATE_ID和起始日期(以下格式),其次是使用了一列名爲Years_and_Months_Since_Start間隔函數來檢索start_date和sysdate之間經過的年數和月數。 (您的值會根據您實驗室的日期而有所不同。)僅顯示開始日期等於2月28日(任何一年)的月份和日期的記錄。
DATE_ID START_DATE YEARS_AND_MONTHS_SINCE_START
2 Sunday , February 28, 1999 13-8
4 Monday , February 28, 2005 7-8
5 Tuesday , February 28, 2006 6-8
是指這個問題
我們EX架構是一個簡單的Date_Sample表有兩列:
DATE_ID NUMBER NOT Null
START_DATE DATE
我寫了這個代碼:
SELECT date_id, TO_CHAR(start_date, 'Day, MONTH DD, YYYY') AS start_date ,
NUMTOYMINTERVAL((SYSDATE - start_date), 'YEAR') AS years_and_months_since_start
FROM date_sample
WHERE TO_CHAR(start_date, 'MM/DD') = '02/28';
但我的年和月以來啓動列無法正常工作。當計算日期從1999年開始計算時,它的年數和月數都非常高。即它應該是13-8,我得到5027-2,所以我知道這是不正確的。我使用了NUMTOYMINTERVAL,它應該是正確的,但不要認爲sysdate-start_date正在工作。 start_date的數據類型只是日期。我嘗試了ROUND,但可能需要一些幫助才能做到。
我的計算有些問題,並試圖找出如何獲得正確的間隔。不知道我是否已經向每個人提供了足夠的信息,但如果我在做之前弄清楚了,我會讓你知道。
這是Murach的Oracle和SQL/PL第17章中的一個問題,如果其他人試圖學習該章。頁面559.
感謝MONTHS_BETWEEN答案是去那裏的路上。在沒有摘錄和年份的情況下編寫查詢的任何可能性。我們還沒有在課堂上討論過。這確實給了我正確的答案,儘管如此,這一切都很重要。再次感謝您今天的時間! – MeachamRob
否,因爲「間隔」數據類型實際上是不可格式化的(從Oracle很好的省略),即to_char()不能對它們產生任何影響。所以如果你選擇它,你會看到它在標準格式或+年 - 月,如+ 000000001-10。格式化的唯一方法是使用extract()和手動構建字符串。 – DazzaL