[ad_1]
मुझे पिछले 30 से आज तक की सभी पंक्तियों का रिकॉर्ड प्राप्त करना है। मैंने यह कोशिश की है लेकिन काम नहीं कर रहा है
मैंने क्या प्रयास किया है:
Dsr_data से date_time चुनें जहां date_time >= CONVERT(Varchar(100), DATEADD(DAY,-30,GETDATE()),103) और date_time <= CONVERT(varchar(100), getdate(),103)
समाधान 3
SELECT date_time FROM dsr_data WHERE date_time between DATEADD(DAY,-30,GETDATE()) and GETDATE();
समाधान 1
आप कन्वर्ट का उपयोग क्यों कर रहे हैं?
एकमात्र संभावित कारण वही कारण है जो यह काम नहीं करता है: आप अपनी तिथियों को DATE, DATETIME, या DATETIME2 के बजाय NVARCHAR कॉलम के रूप में संग्रहीत कर रहे हैं।
जब आप स्ट्रिंग्स की तुलना करते हैं, तो तुलना पूरी तरह से दो स्ट्रिंग्स में पहले अलग-अलग वर्ण पर आधारित होती है: और चूंकि आप विशेष रूप से दिनांक को 103 प्रारूप में प्रारूपित करने का चयन कर रहे हैं, जो कि “dd/MM/yyyy” है, तुलना पूरी तरह बेकार होगी – उदाहरण के लिए वर्ष को अंतिम बार जांचा जाएगा, इसलिए 31/01/2017 31/12/1952 से पहले होगा क्योंकि तुलना महीने के पहले अंक पर आधारित होगी, और ‘0’ ‘1’ से कम है
अपना डेटाबेस बदलें. डेटा को हमेशा उपयुक्त डेटाटाइप में संग्रहीत करें: इसका मतलब है कि INT कॉलम में पूर्णांक मान, DATE, DATETIME, या DATETIME2 कॉलम में तारीख की जानकारी, इत्यादि। यदि आप ऐसा नहीं करते हैं, तो यह उन अनेक घृणित, घिनौनी समस्याओं में से पहली समस्या है जो आपको काटने की प्रतीक्षा कर रही है…
समाधान 2
नीचे दी गई क्वेरी का उपयोग करें.
SELECT date_time FROM dsr_data WHERE date_time >= DATEADD(day,-30, getdate()) and date_time <= getdate()
[ad_2]
コメント