2014-04-14 7 views
16

레코드를 삽입 할 때 현재 주를 저장하는 테이블의 레코드를 원합니다.SQL 서버에서만 현재 주 데이터를 가져 오는 방법은 무엇입니까?

나는 시도했다 :

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

후이 줄을 추가해야? –

+0

오늘 날짜에서 지난 7 일 동안의 기록을 보여줍니다. @ shree.pat18 – sona

+0

"현재 주"를 정의하십시오. 일요일이나 월요일에 시작합니까? –

답변

23

이처럼를 수행합니다 :

을 당신은 현재 주를 추출하기 위해 다음 쿼리를 사용할 수 있습니다
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())) 

설명 :

  • datepart(dw, getdate()) 당신이 SET DATEFIRST을 사용하여 지정된 무엇부터 시작하여, 1 ~ 7, 현재 주에 하루의 수를 반환합니다.
  • dateadd(day, 1-datepart(dw, getdate()), getdate())는 자정에 시작하는 데이터를 원하기 때문에, GETDATE()의 시간 부분을 제거하는 데 사용되는 현재 주
  • CONVERT(date,getdate())의 시작 부분에 도달하는 일의 필요한 수를 뺍니다.
+0

답장을 보내 주셔서 감사합니다. 완벽하게 작동합니다. 다시 감사합니다. @ Twinkles – sona

1

datepart(dw, getdate())dateadd(day, 1-datepart(dw, getdate()), getdate()) 일주일의 마지막 날을 얻기 위해 여기에 7을 추가, 일주일의 첫날해야 현재 요일입니다

-1

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

이번 주보다 현재 요일을 반환하지 않습니까? – 3N1GM4

6

더 좋은 방법은

select datepart(ww, getdate()) as CurrentWeek 

또한 전주의 ​​주당 대신 사용할 수있을 것이다. 나를 위해 일하는

Datepart Documentation

+0

Google을 통해 발견 된 오래된 메일 인 것으로 알고 있지만 같은 주에있는 날짜가 있지만 다른 연도의 레코드는 반환하지 않습니까? – 3N1GM4

1

그것.

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

당신은 당신의 쿼리를 잘못 무엇 항 및 제 AND DATEADD(DAY, 1, GETDATE())

관련 문제