2012-11-07 13 views
25

वर्तमान तिथि से सबसे तेज़ तरीके से सप्ताह डेटा (अधिक सटीक, अंतिम 7 दिन डेटा) का चयन कैसे करें क्योंकि मेरे पास तालिका में लाखों या पंक्तियां हैं। मेरे पास SQL ​​तालिका में create_date का टाइम स्टैंप है।आज की तारीख से पिछले एक सप्ताह के डेटा का चयन कैसे करें

मैं कोशिश की है इस

SELECT Created_Date 
FROM Table_Name 
WHERE Created_Date >= DATEADD(day,-7, GETDATE()) 

मैं दो प्रश्न:

  1. इस क्वेरी सही है है?
  2. क्या यह लाखों पंक्तियों वाली तालिका से पिछले सात दिन के डेटा को प्राप्त करने का सबसे तेज़ तरीका है?

उत्तर

12

हां, वाक्यविन्यास सटीक है और यह ठीक होना चाहिए।

यहाँ SQL Fiddle Demo मैं निवारण हेतु बनाई गई

3
  1. क्वेरी सही

2A है। जहां तक ​​पिछले सात दिनों में पूरी तालिका की तुलना में बहुत कम पंक्तियां हैं, एक सूचकांक

2B की सहायता कर सकता है। आप केवल CREATED_DATE में रुचि रखते हैं आप और कुछ समूह का उपयोग कर कोशिश कर सकते हैं गिनती, यह

3

वर्तमान के लिए रिकॉर्ड को चुनने के लिए पिछले 7 दिनों

WHERE Created_Date >= DATEADD(day, -7, GETDATE()) 

के लिए रिकॉर्ड को चुनने के लिए परिणाम सेट के आकार के साथ मदद करनी चाहिए सप्ताह

SET DATEFIRST 1 -- Define beginning of week as Monday 
SELECT * FROM 
WHERE CreatedDate >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 
    AND CreatedDate < DATEADD(day, 8 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 

अगर आप पिछले 7 दिनों के बजाय पिछले सप्ताह के लिए रिकॉर्ड का चयन करना चाहते

SET DATEFIRST 1 -- Define beginning of week as Monday 
SELECT * FROM 
WHERE CreatedDate >= DATEADD(day, -(DATEPART(dw, GETDATE()) + 6), CONVERT(DATE, GETDATE())) 
    AND CreatedDate < DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE()))