2011-07-21 14 views
13

मैं एक संग्रहीत प्रक्रिया के साथ कैसे आ सकता हूं जो पिछले 30 दिनों के परिणाम का चयन करता है?पिछले x दिनों से रिकॉर्ड खोजें?

where MONTH(RequestDate) > 6 and DAY(RequestDate) >= 10 
and MONTH(RequestDate) < 21 and DAY(RequestDate) < 7 
+0

दिनों की संख्या केवल, लेकिन हाँ। – dexter

उत्तर

23
SELECT * 
FROM Table 
WHERE GETDATE() >= DATEADD(DAY, -30, GETDATE()) 

स्थानापन्न पहले GETDATE() उपयुक्त स्तंभ नाम के साथ।

SELECT * 
FROM Table 
WHERE Table.ColumnName >= DATEADD(DAY, -30, GETDATE()) 
+0

क्या होगा यदि महीने में 31 या 28 दिन हैं? यह सामान्य कैसे बनाएं? – dexter

+3

@Dexter: क्षमा करें, आपके प्रश्न ने 30 दिन कहा: ओ) –

+1

मुझे पता है, मैंने आपको वोट दिया है, लेकिन प्रगति कभी नहीं रुकती है :) – dexter

2

ऐसा कुछ?

CREATE PROC GetSomeHistory 

    @NumDaysPrevious int 

    AS 
    BEGIN 
     SELECT * FROM MyTable 
     WHERE RequestDate BETWEEN DATEADD(dd, -1 * @NumDaysPrevious, getdate()) 
          AND getdate(); 
    END 

    ...... 

    EXEC GetSomeHistory 55; 
3

आप पिछले 30 दिन या पिछले महीने के लिए देख रहे हैं? शुरू करने और प्रत्येक माह के अंत ("सामान्य" के रूप में अपनी टिप्पणी कहते हैं), उपयोग खोजने के लिए:

select dateadd(month,datediff(month,0,getdate()),0), 
    dateadd(mm,datediff(mm,-1,getdate()),-1) 
1
SELECT * 
FROM Table 
WHERE myDate >= DATEADD(MONTH, -1, GETDATE()) 

महीने से यह कर 30 दिन ब्लॉकों में यह कर से अलग है। इस परीक्षण के रूप में निम्नानुसार ...

declare @mydate smalldatetime 
set @mydate = '07/6/01' 

select @mydate 
select DATEADD(month, 2, @mydate), DATEDIFF(day, DATEADD(month, 2, @mydate), @mydate) 
select DATEADD(month, 1, @mydate), DATEDIFF(day, DATEADD(month, 1, @mydate), @mydate) 
select DATEADD(month, -1, @mydate), DATEDIFF(day, DATEADD(month, -1, @mydate), @mydate) 
select DATEADD(month, -2, @mydate), DATEDIFF(day, DATEADD(month, -2, @mydate), @mydate) 
select DATEADD(month, -3, @mydate), DATEDIFF(day, DATEADD(month, -3, @mydate), @mydate) 

यहाँ परिणाम हैं:

2001-07-06 00:00:00 
2001-09-06 00:00:00 | -62 
2001-08-06 00:00:00 | -31 
2001-06-06 00:00:00 | 30 
2001-06-06 00:00:00 | 30 
2001-05-06 00:00:00 | 61 
2001-04-06 00:00:00 | 91 
संबंधित मुद्दे