2014-10-30 93 views
0

我在PL/SQL中的sysdate格式有問題。 我試着計算一天的年齡(所以它應該返回類似20.44的東西)。 但是,sysdate不能使用這種格式,值v_leeftijd一直返回-2000.91。 明顯的是,這不是我的年齡。我該如何解決這個問題? 我有以下代碼:PL/SQL sysdate格式不起​​作用?

declare 
v_vandaag date := to_date(sysdate, 'DD-MM-YYYY'); 
v_geboortedatum date := to_date('29-05-2014', 'DD-MM-YYYY'); 
v_leeftijd number(10,2); 

begin 

--leeftijd/dagen = leeftijd in jaren 
v_leeftijd := (v_vandaag - v_geboortedatum)/365; 

dbms_output.put_line(v_leeftijd); 

end; 
+0

'[..]值v_leeftijd保持返回-2000.91。很明顯,這不是我的年齡。「恭喜,你可能是有史以來最年輕的SO成員!如何在短時間內讓自己參與Oracle傳統技術? – user272735 2014-10-31 06:09:18

回答

2

sysdate已經是一個日期:

SET SERVEROUTPUT ON 
declare 
    v_geboortedatum date := to_date('29-05-2014', 'DD-MM-YYYY'); 
    v_leeftijd number(10,2); 
begin 
    --leeftijd/dagen = leeftijd in jaren 
    v_leeftijd := (sysdate - v_geboortedatum)/365; 

    dbms_output.put_line(v_leeftijd); 
end; 
/
+0

謝謝!現在它對我來說工作正常。然而,當我們運行我們的apex-應用程序時,我的隊友將獲得不同的價值。因爲在荷蘭,計算機有某種不同的sysdate。我的電腦格式化爲英文。我該如何解決這個問題? – viddrawings 2014-10-31 09:06:23

+0

是系統日期是系統日期並且依賴於時區。你不能做任何事情,但我懷疑這是一個問題,因爲你操縱的所有日期都是硬編碼的,對嗎? 29-05-2014不一定是PST或GMT。我想說的是你必須同意一個標準的時區。在行業中,我們通常選擇UTC存儲日期。請注意,SYSDATE是與oracle日期不同的SYSTEM日期。這意味着它使用您的SERVER的時區,而不是DATABASE。 – Sebas 2014-10-31 14:52:40

+0

感謝您的解釋!由於這是一個學校項目,因此只需使用服務器時間即可。但這很好記。 – viddrawings 2014-11-03 23:42:26