SQL सर्वर में, आप T-SQL का उपयोग कर सकते हैं FORMAT()
समय . को प्रारूपित करने के लिए कार्य करता है डेटा प्रकार। हालाँकि, यदि आपको AM/PM डिज़ाइनर जोड़ने की आवश्यकता है, तो आपको एक भिन्न डेटा प्रकार का उपयोग करने की आवश्यकता होगी। ऐसा इसलिए है क्योंकि समय डेटा प्रकार विशेष रूप से 24 घंटे की घड़ी पर आधारित होता है, और इसलिए समय को इस प्रकार स्वरूपित किया जाता है।
उदाहरण 1 - 'समय' की 'डेटाटाइम' से तुलना करना
यदि आप AM/PM डिज़ाइनर के साथ 'समय' डेटा प्रकार को प्रारूपित करने का प्रयास करते हैं तो क्या होता है, यह प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
SELECT FORMAT(CAST('11:28:15' AS datetime), 'hh:mm tt') 'datetime', FORMAT(CAST('11:28:15' AS time), 'hh\:mm tt') 'time';
परिणाम:
+------------+--------+ | datetime | time | |------------+--------| | 11:28 AM | NULL | +------------+--------+
यदि आप AM/PM डिज़ाइनर को 'समय' मान में जोड़ने का प्रयास करते हैं, तो आपको NULL
मिलेगा ।
इसलिए, यदि आपको किसी समय डेटा प्रकार में AM या PM जोड़ने की आवश्यकता है, तो आपको पहले इसे किसी अन्य डेटा प्रकार में बदलना होगा, और फिर इसे प्रारूपित करना होगा।
ध्यान दें कि FORMAT()
फ़ंक्शन वास्तव में परिणाम को एक स्ट्रिंग के रूप में वैसे भी लौटाता है (जब तक कि परिणाम NULL
. न हो )।
यदि आप सोच रहे हैं कि दूसरे प्रारूप स्ट्रिंग में बैकस्लैश क्यों है, तो यह केवल समय के लिए आवश्यक है डेटा प्रकार, और इसका उपयोग कोलन (और किसी भी अवधि) से बचने के लिए किया जाता है। उसके बारे में यहाँ और अधिक।
उदाहरण 2 - 'समय' को 'डेटाटाइम' में बदलना
यह उदाहरण पिछले उदाहरण के लगभग समान है, सिवाय इसके कि मैं इसे और अधिक यथार्थवादी बनाने की कोशिश करता हूं। इसमें, मैं स्पष्ट रूप से एक चर को 'समय' डेटा प्रकार के रूप में सेट करता हूं और फिर उसे प्रारूपित करने का प्रयास करता हूं। मैंने इसे फिर से स्वरूपित करने से पहले इसे 'डेटाटाइम' के रूप में डाला।
DECLARE @thetime time = '11:28:15' SELECT FORMAT(@thetime, 'hh\:mm tt') 'time', FORMAT(CAST(@thetime AS datetime), 'hh:mm tt') 'datetime';
परिणाम:
+--------+------------+ | time | datetime | |--------+------------| | NULL | 11:28 AM | +--------+------------+
यदि आप CONVERT()
. का उपयोग करना पसंद करते हैं फंक्शन, यह इस तरह दिखेगा:
DECLARE @thetime time = '11:28:15' SELECT FORMAT(@thetime, 'hh\:mm tt') 'time', FORMAT(CONVERT(datetime, @thetime), 'hh:mm tt') 'datetime';
परिणाम:
+--------+------------+ | time | datetime | |--------+------------| | NULL | 11:28 AM | +--------+------------+
या आप वांछित प्रकार के किसी अन्य चर के लिए मान को फिर से असाइन कर सकते हैं:
DECLARE @thetime time = '11:28:15' DECLARE @thedatetime datetime = @thetime SELECT FORMAT(@thetime, 'hh\:mm tt') 'time', FORMAT(@thedatetime, 'hh:mm tt') 'datetime';
परिणाम:
+--------+------------+ | time | datetime | |--------+------------| | NULL | 11:28 AM | +--------+------------+
उदाहरण 3 - एकल अक्षर AM/PM डिज़ाइनर
आप एक t
. का भी उपयोग कर सकते हैं एकल अक्षर AM/PM निर्दिष्ट करने के लिए:
SELECT FORMAT(CAST('11:28:15' AS datetime), 'hh:mm t') 'AM', FORMAT(CAST('23:28:15' AS datetime), 'hh:mm t') 'PM';
परिणाम:
+---------+---------+ | AM | PM | |---------+---------| | 11:28 A | 11:28 P | +---------+---------+
उदाहरण 4 - FORMAT() फ़ंक्शन का उपयोग किए बिना
FORMAT()
फ़ंक्शन SQL सर्वर 2012 में पेश किया गया था। यदि आप SQL सर्वर के पुराने संस्करण का उपयोग करते हैं, तो आपको AM/PM डिज़ाइनर जोड़ने के लिए एक अलग विधि का उपयोग करने की आवश्यकता होगी। यह एक तरीका है जिससे आप ऐसा कर सकते हैं:
DECLARE @thetime time SET @thetime = '11:28:15' SELECT CONVERT(varchar(8), @thetime, 100) Result;
परिणाम:
+----------+ | Result | |----------| | 11:28AM | +----------+
वैकल्पिक रूप से, आप प्रतिस्थापित 100
. का उपयोग कर सकते हैं 0
. के साथ उसी परिणाम के लिए:
DECLARE @thetime time SET @thetime = '11:28:15' SELECT CONVERT(varchar(8), @thetime, 0) Result;
परिणाम:
+----------+ | Result | |----------| | 11:28AM | +----------+