私は簡潔に多くの場所で発見されない古いコードベースのビットで働いています。私たちは常にデータベースで使用しているコードのこれらの2つのSQLコードは同じですか?
ワンピース2つの日付が同じプログラム年度内にあるかどうかを決定することです。たとえば、2011年度は2011年7月1日から2012年7月1日に終了します(または技術的には前日)
この問題を解決する通常の方法は、次の種類のコードを使用することです。
if Month(@EnrollmentDate)>=7 begin
set @StartDate='07/01/'+LTRIM(RTRIM(Year(@EnrollmentDate)))
set @EndDate='07/01/'+LTRIM(RTRIM(Year(@EnrollmentDate)+1))
end else begin
set @StartDate='07/01/'+LTRIM(RTRIM(Year(@EnrollmentDate)-1))
set @EndDate='07/01/'+LTRIM(RTRIM(Year(@EnrollmentDate)))
end
...
where (ENROLLMENTDATE >= @StartDate and ENROLLMENTDATE < @EndDate)
私は最近、この問題を解決する必要が起こって、私の頭の中にポップインスタント事がはるかに簡潔なものだった:私は「ただ働き」システムに新しいバグを導入行く前
where year(dateadd(mm,-6,ENROLLMENTDATE)) = year(dateadd(mm,-6,@EnrollmentDate))'
私はこのことについてお伺いしたいと思います。これらの2つのコードはまったく同じですか?彼らはいつも同じ出力を出すでしょうか(有効な日付を仮定して)?
+1 ...まだ後者の形式は同じですが、それがある場合でも、(すべてであれば)、有効EnrollmentDateにインデックスを使用することができなくなりますように深刻なパフォーマンスヒットを得るために起こっている確信していません。 –