सरल DateTime एसक्यूएल क्वेरी


83

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

मैं SQL सर्वर 2005 का उपयोग कर रहा हूँ

नीचे त्रुटि कोड

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

ध्यान दें कि मुझे एक निश्चित समय सीमा के भीतर पंक्तियाँ प्राप्त करने की आवश्यकता है। उदाहरण, 10 मिनट की समय सीमा।

वर्तमान में SQL '12' के पास गलत सिंटैक्स के साथ लौटता है। "


2
clyc का उत्तर सही है: आपको उद्धरण जोड़ने की आवश्यकता है। मैंने पहले इस गलती की है, क्योंकि अगर आप ऐसा where date = 1/12/2011उदाहरण के लिए, यह होगा दिखाई न्यूनतम संभव datetime मूल्य के रूप में तो इलाज शून्य काम करने के लिए, लेकिन वास्तव में 2011/01/12 विभाजित और शून्य मिलता है, और।
जॉन गिब

जवाबों:


116

आपने एकल उद्धरण चिह्न याद किया:

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: mm: ss.nnn [Z] का उपयोग करने की अनुशंसा की जाती है, क्योंकि यह आपके सर्वर की स्थानीय संस्कृति पर निर्भर नहीं करेगा।

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

Msg 242, Level 16, State 3, Line 1 के रूप में अच्छी तरह से काम नहीं करता है। एक डेटा डेटा प्रकार को डेटाटाइम के प्रकार में परिवर्तित करने के परिणामस्वरूप एक आउट-की-रेंज डेटाटाइम मान प्राप्त होता है।
ove

@overule - दूसरे उदाहरण का उपयोग करके देखें
एलेक्स अजा

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

3
@ ईरिक - yyyymmdd के पास समय नहीं है।
एलेक्स आजा

8

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

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

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

Sql सर्वर स्ट्रिंग को दिनांक रूपांतरण के लिए


उपरोक्त के समान त्रुटि। Msg 242, Level 16, State 3, Line 1 एक डेटा डेटा प्रकार को डेटाटाइम लाइफ टाइप में बदलने के परिणामस्वरूप आउट-ऑफ-द-रेंज डेटाटाइम मान प्राप्त होता है। मैं वास्तव में भ्रमित हूँ।
ove

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

6

यह मेरे लिए SQL Server 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'}

5

आप नीचे दिए गए कोड को निष्पादित कर सकते हैं

SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14

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

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


1
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

1

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

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

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


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.