4pm

2012-11-26 3 views
5

से अधिक समय का उपयोग कर सभी डेटा का चयन करना मुझे SQL सर्वर प्रबंधन स्टूडियो माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 - 9.00.4060.00 (एक्स 64) डीबी तालिका में प्रति दिन datatimestamp में समय> 4pm डेटा का चयन करने की आवश्यकता है जिसमें दो वर्ष का डेटा है । ऐसा करने का सबसे अच्छा तरीका क्या है? मेरे टाइम स्टाम्प में निम्नलिखित प्रारूप हैं: DATETIME, '2005-10-13 16:00:00', 102। मेरे पास हर दोपहर यादृच्छिक समय पर डेटा है। मुझे हर दिन 4 बजे के बाद डेटा प्राप्त करने की आवश्यकता है। सिर्फ एक दिन के लिए नहीं।4pm

उदाहरण के लिए मैं एक दिन इस तरह के लिए करने की कोशिश की:

SELECT  Yield, Date, ProductType, Direct 
FROM   MIAC_CCYX 
WHERE  (Date < CONVERT(DATETIME, '2005-10-13 16:00:00', 102)) Thanks for help 
+3

आप आरडीबीएमएस का उपयोग कर रहे हैं? एस क्यू एल सर्वर? माई एसक्यूएल? आकाशवाणी? कुछ और? क्या आपका टाइम स्टैम्प वास्तव में एक 'टाइमस्टैम्प' डेटा प्रकार, एक 'डेटाटाइम', या कुछ और है? – LittleBobbyTables

+0

आप अपने डेटाबेस का कौन सा संस्करण उपयोग कर रहे हैं? –

+0

आपके प्रश्न में 102 क्या है? क्या यह 2005-10-13 16: 00: 00.102 नहीं होगा? – SKJ

उत्तर

12

यह मुश्किल है अपने प्रश्न पढ़ने के लिए, लेकिन तुम सच मानते हुए एक datetime डेटा प्रकार का उपयोग कर रहे हैं, तो आप datepart उपयोग कर सकते हैं एक समय के साथ किसी भी दिनांकों को खोजने के लिए

WHERE datepart(hh, YourDate) > 16 

आप अब, साथ ही मिनट की जरूरत के बाद यदि आप के बाद 4:45 PM पर रिकॉर्ड चाहते हैं, आप अपनी तिथि एक समय के लिए इस तरह डाली कर सकते हैं::

से कम 4 PM पर अधिक से अधिक 10

एसक्यूएल सर्वर 2000/2005

SELECT Yield, [Date], ProductType, Direct 
FROM MIAC_CCYX 
WHERE cast(convert(char(8), [Date], 108) as datetime) > cast('16:45' as datetime) 

अनिवार्य रूप से आप convert's Date and Time styles का उपयोग कर, एक समय स्ट्रिंग के लिए तिथि परिवर्तित फिर वापस एक datetime करने के लिए अपने वांछित समय के खिलाफ तुलना के लिए कन्वर्ट करने के लिए तारीख डाली।

एसक्यूएल सर्वर 2008+

SELECT Yield, [Date], ProductType, Direct 
FROM MIAC_CCYX 
WHERE CAST([Date] as time) > CAST('16:45' as time) 
+0

हाँ, मैंने कोशिश की। मुझे रूपांतरण त्रुटि मिल रही है – user1783998

+0

ठीक है, आपके क्षेत्र का डेटा प्रकार क्या है जिसके खिलाफ आप पूछ रहे हैं? क्या यह एक 'टाइमस्टैंप', 'डेटाटाइम', 'वर्कर' या कुछ और है? आपको प्राप्त होने वाली सटीक रूपांतरण त्रुटि क्या है? आप हमें काम करने के लिए कुछ भी नहीं दे रहे हैं। – LittleBobbyTables

+0

@ user1783998 - क्या कोई काम नहीं करता है? – LittleBobbyTables

0

यह काम करेंगे जो कुछ भी अपनी तिथि है। यह तिथियों की तुलना नहीं करेगा। बल्कि, DatePart() दिनांक से घंटे तत्व निकालने और अपने निश्चित समय (आपके मामले में जैसे 4 P.M.)

SELECT * from <table> where DATEPART(hh, ModifiedDate) >= 16 

मैं स्तंभ नाम के रूप में ModifiedDate संभालने हूँ के साथ comapre होगा। यह 4 पीएम से डेटा वापस कर देगा। 11:59:59 पीएम संपादित करें: मैंने इसे एमएस एसक्यूएल सर्वर 2012 के खिलाफ जांच लिया है। इसके अलावा यह डेटाटाइम प्रारूप के साथ काम करेगा।

+0

काम करता है 'GETDATE() 'का उपयोग करने का क्या मतलब है? 'GETDATE()' का उपयोग करके, यदि आप 4 बजे के बाद क्वेरी चलाने के लिए होते हैं तो वह तालिका से सब कुछ चुन देगा। यदि आप इसे 4 बजे से पहले चलाते हैं, तो आपको कुछ भी नहीं मिलेगा। – LittleBobbyTables

+0

इसका उपयोग वर्तमान दिन के डेटा को प्राप्त करने के लिए किया जाएगा।पिछले सभी दिनों के लिए डेटा प्राप्त करने के लिए, उपयोगकर्ता तिथि दर्ज कर सकते हैं। यह एक बड़ा सौदा नहीं है .... – SKJ

+0

नहीं, यह नहीं होगा। यदि आप 'getdate()' में मौजूदा घंटा 16 से अधिक है तो आप सब कुछ चुन रहे हैं। आप अपने 'WHERE' स्टेमेंट में तालिका कॉलम निर्दिष्ट भी नहीं कर रहे हैं।

से 'चयन * चलाने का प्रयास करें, जहां DATEPART (एचएच, GETDATE())> 23' और देखें कि आपको क्या मिलता है (मान लीजिए कि यह 11 बजे से पहले नहीं है)। – LittleBobbyTables