Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

PARSE () का उपयोग करके SQL सर्वर में एक स्ट्रिंग को दिनांक/समय में कैसे परिवर्तित करें

यदि आप SQL सर्वर के साथ काम करते हैं, तो संभावना है कि आपने CONVERT() में से कम से कम एक का उपयोग किया हो या CAST() एक डेटा प्रकार से दूसरे डेटा प्रकार में कनवर्ट करने के लिए कार्य करता है। यदि आपको किसी स्ट्रिंग को दिनांक/समय डेटा प्रकार में कनवर्ट करने का प्रयास करते समय कभी कोई त्रुटि आई है, तो PARSE() फ़ंक्शन वह हो सकता है जिसकी आपको आवश्यकता है।

उदाहरण के लिए, यदि आपके पास एक स्ट्रिंग है, जैसे शुक्र, 20 जुलाई 2018 , CONVERT() या CAST() फ़ंक्शन एक त्रुटि फेंक देंगे। लेकिन PARSE() फ़ंक्शन बिना किसी समस्या के इसे संभाल लेगा।

PARSE() फ़ंक्शन SQL सर्वर में अनुरोधित डेटा प्रकार में अनुवादित अभिव्यक्ति का परिणाम देता है। तो आप इसका उपयोग अपने स्ट्रिंग मान को दिनांक/समय डेटा प्रकार (जैसे दिनांक) में "अनुवाद" करने के लिए कर सकते हैं , डेटाटाइम , डेटाटाइम2 , आदि)।

सिंटैक्स

यहां PARSE() के लिए सिंटैक्स दिया गया है समारोह:

PARSE ( string_value AS data_type [ USING culture ] )

जहां string_value वह मान है जिसे आप पार्स करना चाहते हैं, data_type वह डेटा प्रकार है जिसमें आप इसे पार्स करना चाहते हैं, और culture एक वैकल्पिक तर्क है जिसका उपयोग आप यह निर्दिष्ट करने के लिए कर सकते हैं कि स्ट्रिंग को पार्स करते समय किस भाषा प्रारूप का उपयोग करना है।

मूल उदाहरण

उपयोग को प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।

SELECT PARSE('Friday, 20 July 2018' AS datetime2) 
AS 'Result';

परिणाम:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-07-20 00:00:00.0000000 |
+-----------------------------+

समय भाग निकालें

पिछले उदाहरण में, हमने निर्दिष्ट किया था कि स्ट्रिंग को datetime2 . के रूप में पार्स किया जाना चाहिए डेटा प्रकार। इस डेटा प्रकार में उच्च परिशुद्धता वाला समय घटक शामिल है। यदि आपको समय घटक की आवश्यकता नहीं है, तो आप इसे हमेशा तारीख . के रूप में पार्स कर सकते हैं डेटा प्रकार।

यदि हम तारीख निर्दिष्ट करते हैं तो परिणाम यहां दिया गया है डेटा प्रकार:

SELECT PARSE('Friday, 20 July 2018' AS date) 
AS 'Result';

परिणाम:

+------------+
| Result     |
|------------|
| 2018-07-20 |
+------------+

समय का हिस्सा रखें, लेकिन कम सटीकता के साथ

और अगर आप करते हैं समय चाहिए, लेकिन कम सटीकता के साथ, आप हमेशा स्मॉलडेटटाइम . का उपयोग कर सकते हैं डेटा प्रकार:

SELECT PARSE('2:35:50pm, Friday, 20 July 2018' AS smalldatetime) 
AS 'Result';

परिणाम:

+---------------------+
| Result              |
|---------------------|
| 2018-07-20 14:36:00 |
+---------------------+

लेकिन अगर यह पर्याप्त सटीक नहीं है, तो हमेशा डेटाटाइम . होता है डेटा प्रकार:

SELECT PARSE('2:35:50.5234pm, Friday, 20 July 2018' AS datetime) 
AS 'Result';

परिणाम:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-07-20 14:35:50.523 |
+-------------------------+

दिनांक इनपुट की विविधताएं

PARSE() फ़ंक्शन आमतौर पर उस तिथि को निर्धारित कर सकता है जिसे आप कनवर्ट करने का प्रयास कर रहे हैं, जब तक आप इसे अनुरोधित डेटा प्रकार के वैध प्रतिनिधित्व के रूप में प्रदान करते हैं। विभिन्न शैलियों में प्रदान की जा रही तिथि के कुछ उदाहरण यहां दिए गए हैं:

SELECT 
    PARSE('Friday, 20 July 2018' AS date) AS 'Result 1',
    PARSE('Fri, 20 July 2018' AS date) AS 'Result 2',
    PARSE('Friday, July 20 2018' AS date) AS 'Result 3',
    PARSE('Fri 20 Jul 18' AS date) AS 'Result 4';

परिणाम:

+------------+------------+------------+------------+
| Result 1   | Result 2   | Result 3   | Result 4   |
|------------+------------+------------+------------|
| 2018-07-20 | 2018-07-20 | 2018-07-20 | 2018-07-20 |
+------------+------------+------------+------------+

हालांकि, यह मानसिक नहीं है:

'परिणाम' के रूप में
SELECT PARSE('Next Friday' AS date) 
AS 'Result';

परिणाम:

Error converting string value 'Next Friday' into data type date using culture ''. 

संस्कृति जोड़ें

आप यह निर्दिष्ट करने के लिए तीसरा तर्क जोड़ सकते हैं कि आपकी स्ट्रिंग किस संस्कृति में स्वरूपित है। उदाहरण के लिए, यदि आपकी तिथि 01/06/2018 है , इसका मतलब या तो 6 जनवरी 2018 . हो सकता है या 1 जून 2018 , उपयोग की जा रही संस्कृति के आधार पर।

यहां संस्कृति को निर्दिष्ट करने का एक उदाहरण दिया गया है:

SELECT 
    PARSE('01/06/2018' AS date USING 'en-US') AS 'en-US',
    PARSE('01/06/2018' AS date USING 'en-GB') AS 'en-GB';

परिणाम:

+------------+------------+
| en-US      | en-GB      |
|------------+------------|
| 2018-01-06 | 2018-06-01 |
+------------+------------+

यदि आप यह तर्क नहीं देते हैं, तो वर्तमान सत्र की भाषा का उपयोग किया जाता है।

गलत कार्यदिवस प्रदान करना

PARSE() फ़ंक्शन बहुत स्मार्ट है, इसमें, यदि आप गलत कार्यदिवस प्रदान करते हैं, तो यह एक त्रुटि लौटाएगा।

इसलिए यदि हम पिछले उदाहरणों के समान दिनांक का उपयोग करते हैं, लेकिन हम कार्यदिवस को शुक्रवार से गुरुवार तक बदलते हैं, तो यहां क्या होता है:

SELECT PARSE('Thursday, 20 July 2018' AS date) 
AS 'Result';

परिणाम:

Error converting string value 'Thursday, 20 July 2018' into data type date using culture ''.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में ऑडिट ट्रिगर बनाना

  2. फ़ाइल की जाँच करें sql सर्वर में मौजूद है या नहीं?

  3. Azure SQL DB घोषणा (पूर्वावलोकन) के लिए स्पॉटलाइट क्लाउड समर्थन

  4. SQL सर्वर लेनदेन लॉग — भाग 1

  5. SQL सर्वर में INSERT INTO SELECT क्वेरी में डुप्लिकेट से बचें