MySQL मेंएसक्यूएल सर्वर डेटाटाइम पसंद का चयन करें?
select * from record where register_date like '2009-10-10%'
एसक्यूएल सर्वर में वाक्य रचना क्या है?
धन्यवाद।
MySQL मेंएसक्यूएल सर्वर डेटाटाइम पसंद का चयन करें?
select * from record where register_date like '2009-10-10%'
एसक्यूएल सर्वर में वाक्य रचना क्या है?
धन्यवाद।
के रूप में यह समय घटक पर ध्यान नहीं देता आप DatePart() फ़ंक्शन
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
मैं इस तरह से आसान को पढ़ने के लिए मिल जाए, इस्तेमाल कर सकते हैं, और आप के लिए अगले दिन की तारीख का उपयोग करने की जरूरत नहीं है अपने चयन को प्रतिबंधित करें। उपयुक्त डेटपर्ट कोड का उपयोग करके अतिरिक्त क्लॉज जोड़कर आप अधिक या कम ग्रैन्युलरिटी पर जा सकते हैं, उदा।
AND DATEPART(hh, register_date) = 12)
रिकॉर्ड बना पाने के लिए 12 और के बीच 1.
वैध तर्क की पूरी सूची के MSDN DATEPART docs से परामर्श करें।
से पहले प्रत्येक तारीख शामिल होगी यदि कोई है register_date पर इंडेक्स, यह पूरी तरह से इंडेक्स को अनदेखा कर देगा और प्रदर्शन भुगतना होगा। शायद काफी बुरी तरह से। –
ठीक है, लेकिन यह प्रश्न की तारीख के बाद दिन के समतुल्य स्ट्रिंग का उपयोग करने की समस्या से बचता है, जिसे यहां कुछ उत्तरों में सुझाव दिया जा रहा है। ट्रिकी जहां प्रश्न की तारीख महीने या साल का अंत है। –
+1 यह क्यों कम किया गया था? – Andomar
DATETIME चर के खिलाफ की तरह ऑपरेटर के लिए कोई सीधा समर्थन नहीं है, लेकिन आप हमेशा एक VARCHAR को DATETIME डाली कर सकते हैं:
SELECT (list of fields) FROM YourTable
WHERE CONVERT(VARCHAR(25), register_date, 126) LIKE '2009-10-10%'
CONVERT समारोह में उपलब्ध "शैली" की एक पूरी सूची के लिए MSDN docs की जाँच करें।
मार्क
मुझे लगता है कि मुझे समय-समय पर संभालने के लिए * कम से कम * वांछनीय तरीका लगता है ... –
सहमत हुए - लेकिन ओपी ने समय के साथ डेटाटाइम को संभालने का एक तरीका अनुरोध किया .... लेकिन मैं सहमत हूं - समय-समय पर> = और श्रेणियों के साथ संभाला जाना चाहिए। <= या BETWEEN - बहुत बेहतर दृष्टिकोण –
सभी को धन्यवाद। क्षमा करें मैं एसक्यूएल के लिए सिर्फ एक नौसिखिया हूँ। – Paisal
आप, आप एक स्ट्रिंग रूपांतरण करने के लिए मजबूर कर रहे हैं करते हैं। बेहतर होगा एक प्रारंभ/समाप्ति तिथि सीमा का निर्माण, और उपयोग करने के लिए होगा:
declare @start datetime, @end datetime
select @start = '2009-10-10', @end = '2009-11-10'
select * from record where register_date >= @start
and register_date < @end
यह सूचकांक का उपयोग करने (यदि वहाँ register_date
पर एक है) के बजाय एक मेज स्कैन से की अनुमति देगा।
धन्यवाद। क्षमा करें मैं एसक्यूएल के लिए सिर्फ एक नौसिखिया हूँ। – Paisal
आप टेक्स्ट फॉर्म में तारीख प्राप्त करने के लिए CONVERT का उपयोग कर सकते हैं। आप एक varchar (10) को परिवर्तित करते हैं, तो आप = तरह के बजाय का उपयोग कर सकते हैं:
select *
from record
where CONVERT(VARCHAR(10),register_date,120) = '2009-10-10'
या आप अतिरिक्त लाभ यह एक सूचकांक का उपयोग कर सकता है कि के साथ एक ऊपरी और निचले सीमा की तारीख का उपयोग कर सकते:
select *
from record
where '2009-10-10' <= register_date
and register_date < '2009-10-11'
आप LIKE का उपयोग करके तारीख खोजने योग्य बनाने के लिए कनवर्ट का भी उपयोग कर सकते हैं। उदाहरण के लिए,
select convert(VARCHAR(40),create_date,121) , * from sys.objects where convert(VARCHAR(40),create_date,121) LIKE '%17:34%'
SQL सर्वर में तिथियों के लिए LIKE ऑपरेटर का एक बहुत ही आकर्षक कवरेज है। यह केवल अमेरिकी दिनांक प्रारूप का उपयोग कर काम करता है। एक उदाहरण के रूप में आप की कोशिश कर सकते:
... WHERE register_date LIKE 'oct 10 2009%'
मैं SQL सर्वर 2005 में इस परीक्षण किया है और यह काम करता है, लेकिन क्या तुम सच में विभिन्न संयोजनों की कोशिश करनी होगी। अजीब बातें मैंने देखा है:
आप केवल तारीख के भीतर विभिन्न उप क्षेत्रों, के लिए सब कुछ या कुछ पाने के लिए लग रहे हैं, उदाहरण के लिए, यदि आप 'अप्रैल 2%' के लिए खोज आप केवल 20 वीं के दशक में कुछ भी - यह 2 की छूट देता है।
एक भी अंडरस्कोर '_' का उपयोग करते हुए एक भी (वाइल्डकार्ड) चरित्र का प्रतिनिधित्व करने नहीं करता है पूरी तरह से काम करते हैं, उदाहरण के लिए, WHERE mydate LIKE 'oct _ 2010%'
होगा वापसी नहीं सभी तिथियों से पहले 10 वीं - यह कुछ भी नहीं देता है, असल में!
प्रारूप कठोर अमेरिकी है: 'mmm dd yyyy hh:mm
'
इसलिए यदि किसी को भी इस थोड़ा आगे ले जाने की, मेरे मेहमान हो चाहता है मैं, यह likeing सेकंड के लिए एक प्रक्रिया जकड़ना करने के लिए मुश्किल मिल गया है!
उम्मीद है कि इससे मदद मिलती है।
दुर्भाग्यवश, 'LIKE' का उपयोग करके वेटरटाइम की तुलना में डेटाटाइम की तुलना करना संभव नहीं है लेकिन वांछित आउटपुट किसी अन्य तरीके से संभव है।
select * from record where datediff(dd,[record].[register_date],'2009-10-10')=0
यह मेरे लिए काम किया। बहुत बहुत धन्यवाद –
LIKE
ऑपरेटर महीने या तारीख की तरह तिथि भागों के साथ काम नहीं करता है, लेकिन DATEPART
ऑपरेटर करता है।
कमान सभी खातों जिसका ओपन दिनांक 1 पर था पता लगाने के लिए:
SELECT *
FROM Account
WHERE DATEPART(DAY, CAST(OpenDt AS DATE)) = 1`
* कास्टिंग OpenDt
क्योंकि यह मूल्य DATETIME
में है और न सिर्फ DATE
है।
मैंने अपनी समस्या को हल किया। सुधार के लिए सुझावों के लिए धन्यवाद। सी # में उदाहरण।
string dd, mm, aa, trc, data;
dd = nData.Text.Substring(0, 2);
mm = nData.Text.Substring(3, 2);
aa = nData.Text.Substring(6, 4);
trc = "-";
data = aa + trc + mm + trc + dd;
"Select * From bdPedidos Where Data Like '%" + data + "%'";
आप वास्तव में क्या जांचना चाहते हैं? क्या दिया गया डेटाटाइम एक निर्धारित तिथि हिस्सा है? या कुछ और? –
इस पर एक स्वस्थ चर्चा के लिए (जिसमें स्ट्रिंग्स जैसे 'DATETIME' मानों का इलाज करना बुरा क्यों है, और' BETWEEN' या '> = और <=') का उपयोग करने में बुरा क्यों हो सकता है, देखें [यह ब्लॉग हारून बर्ट्रेंड द्वारा] (http://is.gd/4EgDF)। –
[टैग: जैसे-ऑपरेटर] टैग के लिए आपके प्रश्न में कम से कम '5' वोट हैं। क्या मैं कृपया अनुरोध कर सकता हूं कि आप [टैग: एसक्यूएल-जैसे] को [synonym] (http://stackoverflow.com/tags/like-operator/synonyms) के रूप में सुझाव दें? – Kermit