मुझे वर्तमान टाइम स्टैम्प के साथ completed_date कॉलम का मिलान करके H2 डेटाबेस से सभी रिकॉर्ड्स को हटाना है, जहां दिनों में अंतर 1 (या कई दिनों) से अधिक है।

डेटाबेस के स्कीमा के साथ एक समस्या है कि completed_date को दिए गए प्रारूप 11-Jan-2018 15:35:30 PM यानी 'dd-MMM-yyyy HH:mm:ss aaa' प्रारूप में स्ट्रिंग के रूप में संग्रहीत किया जाता है।

कुछ और पैरामीटर हैं जहां स्थिति का मिलान किया जाना चाहिए।

मुझे यह अपवाद मिल रहा है

"टाइमस्टैम्प" स्थिरांक "28-12-2017 03:12:47" को पार्स नहीं कर सकता; एसक्यूएल कथन:

मैंने जो प्रश्न लिखा है वह नीचे जैसा है।

delete from TABLE_NAME
where 
status = 'status1'
OR status = 'status2'
OR status = 'status3' 
AND
TIMESTAMPDIFF(DAY,TO_CHAR(PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss    
aaa'),'dd-MM-yyyy HH:mm:ss'),CURRENT_TIMESTAMP()) >= 1; 

उपरोक्त प्रश्न में मैंने पाया है कि TIMESTAMPDIFF दिनांक प्रारूप dd-MMM-yyyy HH:mm:ss aaa के साथ काम नहीं करता है, इसलिए पहले मैंने इसे 'dd-MM-yyyy HH:mm:ss' प्रारूप में पार्स करने का प्रयास किया है और यदि उपयोग किया जाता है यह नीचे की क्वेरी यह मुझे उचित परिणाम देती है

SELECT TO_CHAR(PARSEDATETIME('2017-OCT-2017 15:49:47 PM','dd-MMM-yyyy 
HH:mm:ss aaa') 
,'dd-MM-yyyy HH:mm:ss') 

बस कुछ और जानकारी दे रहा हूं कि मैं वर्कफ्यूजन कोडिंग कर रहा हूं जो आरपीए टूल है जो आंतरिक रूप से एच 2-डेटाबेस का उपयोग करता है, इसलिए यदि कोई भी यहां वर्कफ्यूजन से है तो वे भी मेरी मदद कर सकते हैं।

0
Nitin Rathod 10 अक्टूबर 2018, 10:22

1 उत्तर

सबसे बढ़िया उत्तर

timestampdiff() इनपुट के रूप में दो टाइमस्टैम्प लेता है, हालांकि आप एक स्ट्रिंग और टाइमस्टैम्प पास कर रहे हैं। तो स्ट्रिंग कुछ डिफ़ॉल्ट प्रारूप का उपयोग करके वापस टाइमस्टैम्प में परिवर्तित हो जाती है।

आपको उपयोग करना चाहिए:

TIMESTAMPDIFF(DAY,PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss aaa'), CURRENT_TIMESTAMP())

(यह मानते हुए कि parsedatetime() स्ट्रिंग को सफलतापूर्वक पार्स कर सकता है)

1
a_horse_with_no_name 10 अक्टूबर 2018, 10:30