3

sqlserver2008r2 からレコードを取得する必要があります。今週のレコードを取得するクエリは次のとおりです。

select EmpCode,EventDate1 as EventDate,InTime,
case when OutTime is null then 'N/A' else Outtime end as OutTime from    
TMS_HOURCALC WHERE intime1
  BETWEEN dateadd(dd,(datediff(DD,-53684,getdate())/7)*7,-53684) 
    AND dateadd(dd,((datediff(dd,-53684,getdate())/7)*7)+7,-53684) 
    and empcode = @empcode
GROUP BY EmpCode, InTime,OutTime, EventDate1,intime1     
order by intime1;

先週の日曜日から土曜日までのみ、先週のレコードを取得するのを手伝ってください。

4

2 に答える 2

2

列で計算を行い、それを where 句で参照すると、ひどいパフォーマンスが得られます。これははるかに優れたアプローチです。

select EmpCode,EventDate1 as EventDate,InTime,
case when OutTime is null then 'N/A' else Outtime end as OutTime from    
TMS_HOURCALC 
WHERE intime1 >= dateadd(dd,(datediff(DD,-1,getdate())/7)*7-7,-1) 
and intime1 < dateadd(dd,((datediff(dd,-1,getdate())/7)*7),-1) 
and empcode = @empcode
GROUP BY EmpCode, InTime,OutTime, EventDate1,intime1     
order by intime1;
于 2013-07-23T10:34:33.463 に答える
1

DB @@DateFirstが 7 (日曜日のデフォルト) に設定されていることを確認し、 DATEPART()を使用します。

使用してみてください:

where 
DATEPART(ww, intime1) = DATEPART(ww, GetDate())
and 
YEAR(intime1) = YEAR(GetDate())
于 2013-07-23T08:32:43.743 に答える