SQL सर्वर में आज की तारीख से पिछले 30 दिनों का डेटा कैसे प्राप्त करें


मुझे पिछले 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()

コメント

タイトルとURLをコピーしました