2011-03-23 19 views
8

Son bir aydaki verileri ve aydan daha güncel verileri almak için sorguyu yazarken yardıma ihtiyacınız var.Son bir aydaki verilere ve aylara ait verilere nasıl ulaşılır

Bugünün tarihi Mar 23 2011 ise, verileri geçen aya ve bu tarihten güne kadar olan verileri almalıyım (Mar 23 2011 demektir).

tarih 2011 Nisan 3 ise, veri gerektiği 2011.

Teşekkür Mart ay verilerden ve Nisan 3rd kadar veri,

Shahsra

cevap

14
Today including time info : getdate() 
Today without time info : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 0) 
Tomorrow without time info : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1) 
Beginning of current month : DATEADD(month, datediff(month, 0, getdate()), 0) 
Beginning of last month : DATEADD(month, datediff(month, 0, getdate())-1, 0) 

yüzden büyük olasılıkla

WHERE dateColumn >= DATEADD(month, datediff(month, 0, getdate())-1, 0) 
    AND dateColumn < DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1) 
+0

Güzel, Benek çözümünü beğendim. –

0

Very helpful page

declare @d datetime = '2011-04-03'; 

declare @startDate datetime; 
select @startDate = 
    CAST('01 '+ RIGHT(CONVERT(CHAR(11),DATEADD(MONTH,-1,@d),113),8) AS datetime); 
select @startDate; 
+0

Bağlantıyı gönderdiğiniz için teşekkür ederiz. Gerçekten çok kullanışlı. – Shahsra

3

Adım Bir ay geri, mevcut tarihe gün sayısını çıkarmak ve bir gün ekleyin.

WHERE 
    DateField <= GetDate() AND 
    DateField >= DateAdd(
     mm, 
     -1, 
     DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate()) 
) 

Eğer

Yani ikinci kısım

(zaman olmadan) olacaktır (DATETIME AS)) FLOAT OLARAK Kat (Cast (GETDATE()) bu Cast kullanabilirsiniz hızla süresini kaldırmak için
DateField >= Cast(Floor(Cast((DateAdd(
      mm, 
      -1, 
      DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate()) 
    )) AS FLOAT)) AS DATETIME) 
+0

eksik - ikincisi "2011-02-01 10: 55: 49.160" – RichardTheKiwi

+0

@Richard - Teşekkürler, güncellendi. –

0
Select Column1, Column2 From Table1 
Where DateColumn <= GetDate() AND 
DateColumn >= DATEADD(dd, - (DAY(DATEADD(mm, 1, GetDate())) - 1), DATEADD(mm, - 1, GetDate())) 

Düzeltme: +1 to Russel Steen. Göndermeyi bilmeden önce benimkini gönderiyordum.

İlgili konular