2016-10-19 7 views
0

私の質問は、タイムスタンプを考慮に入れてSPのWHERE句を変更する必要がありますCreatedDateフィールドに日付自体として表示されます。たとえば、レポートが今日の午後1時に実行された場合、去年の[2015]の今日の午後1時に作成されたレコードと、それまでのところ2016年に作成されたすべてのレコードのみが返されます。現在、2015年にはすべての記録が終わりまでに戻されています。どんな助けでも大歓迎です。クレアYoY&YTD - 前年のレコードのタイムスタンプと日付を考慮に入れて

@CreatedFrom15 DateTime = NULL, 
@CreatedTo15 DateTime = NULL, 
@CreatedFrom16 DateTime = NULL, 
@CreatedTo16 DateTime = NULL, 


SELECT 

BookingID, 
CreatedYear, 
CreatedDate, 
NightDuration, 
HolidayCost, 
TRAVPropertyTypeCategory 

FROM Vw_TRAVLodgeResortGlampingFinancialByNights 

WHERE 
((CreatedYear = DATEPART(YEAR,GETDATE())-1 AND CreatedDate BETWEEN @CreatedFrom15 AND @CreatedTo15) AND (CreatedDate >= @CreatedFrom15 OR @CreatedFrom15 IS NULL) AND (CreatedDate <= @CreatedTo15 OR @CreatedTo15 IS NULL) 
OR 
(CreatedYear = DATEPART(YEAR,GETDATE()) AND CreatedDate BETWEEN @CreatedFrom16 AND @CreatedTo16) AND (CreatedDate >= @CreatedFrom16 OR @CreatedFrom16 IS NULL)AND(CreatedDate <= @CreatedTo16 OR @CreatedTo16 IS NULL)) 

答えて

0

あなたはパラメータの日付を指定できますか? とにかく、年を参照するには、不要と思われるし、また、あなたは内部のヌルケースを含めることができthis- CreatedDateにISNULL間(createdFrom16 @「20160101」)とISNULL(CreatedTo16 @「20161231」)

+0

等との私は、ユーザに両方の年のFromとToの日付を変更する能力を与えるために、私が行ったようにパラメータを構築しました。したがって、2015年に2015-10-01と2015-10-18の間に行われたすべての予約を見たい場合、2016年の同じ期間を正確に比較したいと考えていました。これを行うより良い方法があれば、あなたの助けは非常に高く評価されるでしょうか? – Claire

+0

私はあなたがそこに何かを見逃しているかどうかを見るためにパラメータの値を望んでいました。私は間にnull値が問題を作ることができると思う。おそらく2つのパラメータだけを取得し、昨年はローカル変数を使用するほうがよいでしょう。 – Lihi

関連する問題