2011-12-12 12 views
6


मुझे किसी बिंदु पर गतिशील रूप से एक टाइमस्टैम्प plsql चर वृद्धि करने की आवश्यकता है।
तो, बजाय ऐसा करने का:टाइमस्टैम्प में गतिशील रूप से अंतराल कैसे जोड़ें?

timestamp_ := timestamp_ + INTERVAL '1' DAY; 

मैं इस तरह thomething करना चाहते हैं:

timestamp_ := timestamp_ + INTERVAL days_ DAY; 

यह वास्तव में काम नहीं करता। मेरा अंतिम लक्ष्य कुछ इकाइयों के लिए गतिशील रूप से कुछ शेड्यूलर नौकरियां बनाना है जिनके पास एक परिवर्तनीय समाप्ति तिथि है, जो कि एक ऐसा निर्माण करने से बचने के लिए होता है जिसे अक्सर निष्पादित किया जाएगा।

उत्तर

12

ऐसा लगता है कि आप चाहते हैं

timestamp_ := timestamp + numtodsinterval(days_, 'day'); 

मैं कुछ हद तक सतर्क हो सकता है, तथापि, एक वास्तुकला कि नहीं बल्कि एक ही काम है कि समय-समय पर चलाता है समाप्त हो गई पंक्तियों बाहर खाली करने के लिए की तुलना में अनुसूचक नौकरियों के हजारों बनाने होते हैं के बारे में। एक ही नौकरी प्रबंधन और पर्यवेक्षण के लिए बहुत आसान है।

+0

के लिए धन्यवाद है का जवाब! मैं उन नौकरियों के बारे में सलाह लेगा। – Michael

1
Special note: 
1. INTERVAL YEAR TO MONTH and 
2. INTERVAL DAY TO SECOND 

are the only two valid interval datatypes; 

Sample Example: 
============================= 
DECLARE 
    l_time      INTERVAL YEAR TO MONTH; 
    l_newtime     TIMESTAMP; 
    l_year      PLS_INTEGER := 5; 
    l_month      PLS_INTEGER := 11; 
BEGIN 
    -- Notes : 
    -- 1. format is using "-" to connect year and month 
    -- 2. No need to mention any other keyword ; Implicit conversion takes place to set interval 

    l_time := l_year || '-' || l_month; 

    DBMS_OUTPUT.put_line (l_time); 

    SELECT SYSTIMESTAMP + l_time INTO l_newtime FROM DUAL; 

    DBMS_OUTPUT.put_line ('System Timestamp :' || SYSTIMESTAMP); 
    DBMS_OUTPUT.put_line ('New Timestamp After Addition :' || l_newtime); 
END; 
============================= 
1

इस प्रयास करें:

DECLARE 
    l_val  NUMBER; 
    l_result VARCHAR2(20); 
BEGIN 
    l_val := 1; 

    SELECT SYSDATE - INTERVAL '1' DAY * l_val INTO l_result FROM DUAL; 

    DBMS_OUTPUT.put_line('Current Date is ' || SYSDATE || ' minus ' || l_val || ' day(s) is ' || l_result); 
END; 

आउटपुट होगा:
वर्तमान दिनांक 25-FEB-16 शून्य से 1 दिन (रों) है 24-FEB-16

संबंधित मुद्दे