2011-05-25 18 views
60

मैं किसी निश्चित सीमा के भीतर डेटटाइम डेटाबेस फ़ील्ड से कैसे क्वेरी करूं?सरल दिनांक समय एसक्यूएल क्वेरी

मैं नीचे

SELECT * 
    FROM TABLENAME 
WHERE DateTime >= 12/04/2011 12:00:00 AM 
    AND DateTime <= 25/05/2011 3:53:04 AM 

ध्यान दें कि मैं एक निश्चित समय सीमा के भीतर पंक्तियों प्राप्त करने की आवश्यकता SQL सर्वर 2005

त्रुटि कोड का उपयोग कर रहा हूँ। उदाहरण, 10 मिनट की समय सीमा। ।

गलत वाक्य रचना के पास '12' के साथ

वर्तमान में एसक्यूएल वापसी "

+2

क्लाइक का उत्तर सही है: आपको उद्धरण जोड़ने की आवश्यकता है।मैंने पहले यह गलती की है, क्योंकि यदि आप उदाहरण के लिए 'दिनांक = 1/12/2011' करते हैं, तो यह * काम करने के लिए * दिखाई देगा, लेकिन वास्तव में 1/12/2011 को विभाजित करें और शून्य प्राप्त करें, और उसके बाद शून्य का इलाज करें न्यूनतम संभव डेटाटाइम मूल्य। –

उत्तर

74

आप एकल उद्धरण संकेत याद किया: mm:

SELECT * 
FROM TABLENAME 
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM' 

इसके अलावा, यह ISO8601 YYYY-MM-DDThh उपयोग करने के लिए सिफारिश की है: ss.nnn [Z], यह एक अपने सर्वर की स्थानीय संस्कृति पर निर्भर नहीं होगा।

SELECT * 
FROM TABLENAME 
WHERE 
    DateTime >= '2011-04-12T00:00:00.000' AND 
    DateTime <= '2011-05-25T03:53:04.000' 
+0

काम नहीं करता है संदेश 242, स्तर 16, राज्य 3, रेखा 1 डेटा डेटा प्रकार को डेटाटाइम डेटा प्रकार में परिवर्तित करने के परिणामस्वरूप आउट-ऑफ-रेंज डेटाटाइम मान होता है। – ove

+0

@overule - दूसरे उदाहरण –

+0

@overule का उपयोग करने का प्रयास करें - यह भी सुनिश्चित करें कि आपके कॉलम में डेटाटाइम प्रकार है। –

8

आप स्ट्रिंग के आसपास उद्धरण आप एक तिथि के रूप में दर्शाने की कोशिश कर रहे की जरूरत है, और आप भी यहाँ के बीच का उपयोग कर सकते :

SELECT * 
    FROM TABLENAME 
    WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM' 

कैसे स्पष्ट रूप से तारीखों के तार कन्वर्ट करने के लिए, जबकि प्रारूप को निर्दिष्ट पर उदाहरण के लिए निम्नलिखित प्रश्न का जवाब देखें:

Sql Server string to date conversion

+0

उपरोक्त के समान त्रुटि। संदेश 242, स्तर 16, राज्य 3, रेखा 1 डेटा डेटा प्रकार को डेटाटाइम डेटा प्रकार में परिवर्तित करने के परिणामस्वरूप आउट-ऑफ-रेंज डेटाटाइम मान हुआ। मैं वास्तव में उलझन में हूं। – ove

+0

ओह, मैंने अभी आपके दिनांक समय की प्रतिलिपि बनाई है, आपको 25/05 मिल गया है, लेकिन शायद यह महीने/तारीख की अपेक्षा कर रहा है, इसलिए उन दोनों को स्विच करें। मैंने अपना जवाब संपादित किया और एसओ पर एक अच्छे प्रश्न से जुड़ा हुआ है जो दिखाता है कि स्ट्रिंग्स को तारीखों में स्पष्ट रूप से कैसे परिवर्तित किया जाए – Milimetric

0
SELECT * 
    FROM TABLENAME 
WHERE [DateTime] >= '2011-04-12 12:00:00 AM' 
    AND [DateTime] <= '2011-05-25 3:35:04 AM' 

अगर यह काम नहीं मिलता है तो कृपया स्क्रिप्ट बाहर अपनी मेज और इसे यहां पोस्ट करें। इससे हमें आपको सही उत्तर तुरंत प्राप्त करने में मदद मिलेगी।

1

अन्य पहले से ही कह चुके हैं कि SQL सर्वर में दिनांक अक्षर को एकल उद्धरण से घिरा होना आवश्यक है, लेकिन मैं यह जोड़ना चाहता था कि आप अपने महीने/दिन मिश्रण समस्या को दो तरीकों से हल कर सकें (यानी, समस्या जहां 25 को देखा जाता है महीने और 5 दिन):

  1. एक स्पष्ट Convert(datetime, 'datevalue', style) जहां शैली सांख्यिक शैली कोड में से एक है का उपयोग करें, Cast and Convert देखते हैं। शैली पैरामीटर केवल तारीखों को तारों में परिवर्तित करने के लिए नहीं बल्कि यह निर्धारित करने के लिए भी है कि तारों को तारों को कैसे पार्स किया जाता है।

  2. तारों के रूप में संग्रहीत तिथियों के लिए एक क्षेत्र-स्वतंत्र प्रारूप का उपयोग करें। मैं जो उपयोग करता हूं वह है 'yyyymmdd hh: mm: ss', या आईएसओ प्रारूप, yyyy-mm-ddThh:mi:ss.mmm पर विचार करें। प्रयोग के आधार पर, कोई अन्य भाषा-परिवर्तनीय प्रारूप स्ट्रिंग नहीं है। (हालांकि मुझे लगता है कि आप अंत में समय क्षेत्र शामिल कर सकते हैं, उपर्युक्त लिंक देखें)।

0
select getdate() 

O/P 
---- 
2011-05-25 17:29:44.763 

select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM' 

O/P 
--- 
22/06/1432 5:29:44:763PM 
6

यह दोनों एसक्यूएल सर्वर 2005 और 2008 में मेरे लिए काम किया है:

SELECT * from TABLE 
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'} 
    AND FIELDNAME < {ts '2013-08-05 00:00:00.000'} 
1

पहुँच फ़ाइल आप के लिए SQL डेटा निर्यात करने के लिए कोशिश कर रहे हैं खोलें। वहां मौजूद किसी भी क्वेरी को हटाएं। जब भी आप SQL सर्वर आयात विज़ार्ड चलाते हैं, भले ही यह विफल हो जाए, यह एक्सेस डीबी में एक क्वेरी बनाता है जिसे आप SQL निर्यात विज़ार्ड को फिर से चलाने से पहले हटा दिया जाना चाहिए।

संबंधित मुद्दे