मुझे इस धागे में थोड़ी देर हो गई है, लेकिन वास्तव में एमएस SQL सर्वर में समान ऑपरेटर के लिए प्रत्यक्ष समर्थन है।
LIKE मदद में दस्तावेज के रूप में अगर डेटाटाइप एक स्ट्रिंग नहीं है तो इसे स्ट्रिंग में बदलने का प्रयास किया जाता है। और कास्ट / कन्वर्ट प्रलेखन में दस्तावेज के रूप में:
डिफ़ॉल्ट डेटाइम रूपांतरण स्ट्रिंग में टाइप 0 (और, 100) है जो मोन डीडी yyyy hh: miAM (या PM) है।
यदि आपके पास डीबी में इस तरह की तारीख है:
2015-06-01 11:52:59.057
और आप इस तरह से प्रश्न करते हैं:
select * from wws_invoice where invdate like 'Jun%'
select * from wws_invoice where invdate like 'Jun 1%'
select * from wws_invoice where invdate like 'Jun 1 %'
select * from wws_invoice where invdate like 'Jun 1 2015:%'
select * from wws_invoice where invdate like 'Jun ? 2015%'
...
select * from wws_invoice where invdate like 'Jun 1 2015 11:52AM'
आप उस पंक्ति को प्राप्त करें।
हालाँकि, यह दिनांक प्रारूप बताता है कि यह DateTime2 है , फिर प्रलेखन कहता है:
21 या 121 - ओडीबीसी विहित (मिलीसेकंड के साथ) समय, तिथि, डेटाइम 2 और डेटाइमऑफ़सेट के लिए डिफ़ॉल्ट। - yyyy-mm-dd hh: mi: ss.mmm (24h)
यह आसान बनाता है और आप उपयोग कर सकते हैं:
select * from wws_invoice where invdate like '2015-06-01%'
और चालान रिकॉर्ड प्राप्त करें। यहाँ एक डेमो कोड है:
DECLARE @myDates TABLE (myDate DATETIME2);
INSERT INTO @myDates (myDate)
VALUES
('2015-06-01 11:52:59.057'),
('2015-06-01 11:52:59.054'),
('2015-06-01 13:52:59.057'),
('2015-06-01 14:52:59.057');
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11:52:59%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11:52:59.054%';
स्ट्रिंग के लिए किसी भी रूपांतरण के बिना SQL सर्वर में डेटाटाइम खोज करना हमेशा समस्याग्रस्त रहा है। प्रत्येक दिनांक भाग को प्राप्त करना एक ओवरकिल है (जो कि संभवत: एक सूचकांक का उपयोग नहीं करेगा)। जब आप स्ट्रिंग रूपांतरण का उपयोग नहीं करते हैं तो संभवतः एक बेहतर तरीका रेंज चेक का उपयोग करना होगा। अर्थात:
select * from record
where register_date >= '20091010' and register_date < '20091011';