2014-04-14 13 views
16

Sadece geçerli haftada bir kayıt eklendiğinde geçerli tarihi depolayan tablodan kayıtlar istiyorum.Geçerli haftaya ait verileri yalnızca SQL Server'da nasıl edinebilirim?

denedim:

SELECT PId 
,WorkDate 
,Hours   
,EmpId    
FROM Acb  
WHERE [email protected] AND WorkDate BETWEEN DATEADD(DAY, -7, GETDATE()) AND GETDATE() 
+1

sonra bu satırı koymak zorunda? –

+0

Bugünün tarihinden son 7 güne kadar olan rekoru gösterir. @ Shree.pat18 – sona

+0

"Geçerli haftayı" tanımlayın. Pazar veya pazartesi günü başlıyor mu? –

cevap

23

şöyle yapın::

geçerli hafta ayıklamak için aşağıdaki sorguyu kullanabilirsiniz
SET DATEFIRST 1 -- Define beginning of week as Monday 
SELECT [...] 
AND WorkDate >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
AND WorkDate < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 

Açıklama:

  • datepart(dw, getdate()) Eğer SET DATEFIRST kullanılarak belirtilen her türlü ile başlayan 1'den 7'ye kadar, cari haftada günde sayısını döndürür.
  • dateadd(day, 1-datepart(dw, getdate()), getdate()) gece yarısı başlayan veriyi istedikleri için, GETDATE() saat bölümünü kaldırmak için kullanılır Geçerli haftanın
  • CONVERT(date,getdate()) başlangıcını ulaşmak için gün yeterli sayıda çıkarır.
+0

Cevabınız için çok teşekkürler. Mükemmel çalışıyor.Teşekkürler. @ Twinkles – sona

1

datepart(dw, getdate()), dateadd(day, 1-datepart(dw, getdate()), getdate()) haftanın son günü almak için kendisine 7 ekleyin haftanın ilk günü olmalıdır haftanın şimdiki günüdür

-1

select datepart(dw, getdate()) as CurrentWeek 
+0

Bu, yılın o haftası yerine haftanın güncel gününe dönmez mi? – 3N1GM4

6

daha iyi bir yolu

select datepart(ww, getdate()) as CurrentWeek 

Ayrıca ww hafta yerine kullanabileceğiniz olacaktır. Benim için çalışmak

Datepart Documentation

+0

Bunun eski olduğunu biliyorum (sadece Google üzerinden bulunuyorum), ancak bu aynı zamanda tarihlerle aynı haftadaki kayıtları da geri döndürmez mi? – 3N1GM4

1

Onun.

Select * From Acb Where WorkDate BETWEEN DATEADD(DAY, -7, GETDATE()) AND DATEADD(DAY, 1, GETDATE()) 

Sen sorgu ile yanlış gitti ne VE Madde AND DATEADD(DAY, 1, GETDATE())

İlgili konular