मैं एक संग्रहीत प्रक्रिया के साथ कैसे आ सकता हूं जो पिछले 30 दिनों के परिणाम का चयन करता है?पिछले x दिनों से रिकॉर्ड खोजें?
where MONTH(RequestDate) > 6 and DAY(RequestDate) >= 10
and MONTH(RequestDate) < 21 and DAY(RequestDate) < 7
मैं एक संग्रहीत प्रक्रिया के साथ कैसे आ सकता हूं जो पिछले 30 दिनों के परिणाम का चयन करता है?पिछले x दिनों से रिकॉर्ड खोजें?
where MONTH(RequestDate) > 6 and DAY(RequestDate) >= 10
and MONTH(RequestDate) < 21 and DAY(RequestDate) < 7
SELECT *
FROM Table
WHERE GETDATE() >= DATEADD(DAY, -30, GETDATE())
स्थानापन्न पहले GETDATE() उपयुक्त स्तंभ नाम के साथ।
SELECT *
FROM Table
WHERE Table.ColumnName >= DATEADD(DAY, -30, GETDATE())
ऐसा कुछ?
CREATE PROC GetSomeHistory
@NumDaysPrevious int
AS
BEGIN
SELECT * FROM MyTable
WHERE RequestDate BETWEEN DATEADD(dd, -1 * @NumDaysPrevious, getdate())
AND getdate();
END
......
EXEC GetSomeHistory 55;
आप पिछले 30 दिन या पिछले महीने के लिए देख रहे हैं? शुरू करने और प्रत्येक माह के अंत ("सामान्य" के रूप में अपनी टिप्पणी कहते हैं), उपयोग खोजने के लिए:
select dateadd(month,datediff(month,0,getdate()),0),
dateadd(mm,datediff(mm,-1,getdate()),-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
दिनों की संख्या केवल, लेकिन हाँ। – dexter